support setuservisiblehint onviewcreated onactivitycreated fragments developer android fragment lifecycle

android - setuservisiblehint - ¿Por qué podemos llamar a getActivity() en onCreateView que se ejecuta antes de onActivityCreated?



onviewcreated onactivitycreated (2)

Realmente me confundo con el lifecycle Fragment , especialmente durante el tiempo para llamar a getActivity() . A veces no puedes obtener la Activity por getActivity() . Y siempre causó algunos errores desconcertantes.
Gracias por que cualquiera puede resolver el rompecabezas.


De acuerdo con la documentación actual (diciembre de 2018) , muestra que onAttach() se llama justo al principio antes de onCreate() y onCreateView() . Debe ser seguro getActivity() en estos métodos.

En la documentación de Fragmento de v4 de soporte para onActivityCreated() se dice que este método es:

Se llama cuando se ha creado la actividad del fragmento y se ha creado una instancia de la jerarquía de vistas de este fragmento.

La parte importante aquí es que la "actividad se ha creado", es decir, Activity.onCreate() ha terminado de ejecutarse. Antes de este punto todavía estamos dentro de ese método.

Esto se puede confirmar al mirar el código fuente FragmentActivity.onCreate() , puede seguir el proceso de los fragmentos que se adjuntan a la actividad al inicio del método, luego se restaurará el estado del fragmento, etc. Por lo tanto, la actividad debería ser válida en Todos esos lugares, pero técnicamente no ha terminado con todo el proceso de creación.


getActivity() puede ser nulo mientras su fragmento está en proceso de preparación y está a punto de estar listo.

El ciclo de vida del fragmento está vinculado a los métodos de devolución de llamada. Se llamará a este método en algún lugar en el tiempo mientras se prepara el fragmento.

  • Fragment.onActivityCreated(Bundle) es el lugar donde la actividad del fragmento no será nula, es decir, getActivity() será una instancia válida. Sucede después de onCreateView() aunque

Su apuesta más segura para la existencia de actividad es: