Quali sono le differenze tra onCreate(), onCreateView()e onActivityCreated()nei frammenti e per cosa dovrebbero essere usati?
Quali sono le differenze tra onCreate(), onCreateView()e onActivityCreated()nei frammenti e per cosa dovrebbero essere usati?
Risposte:
onCreate ():
Il onCreate()metodo in un Fragmentviene chiamato dopo la Activity'sonAttachFragment() , ma prima che Fragment' s onCreateView().
In questo metodo, è possibile assegnare variabili, ottenere Intentextra e qualsiasi altra cosa che non coinvolga la gerarchia di visualizzazione (ovvero inizializzazioni non grafiche). Questo è perché questo metodo può essere chiamato quando il Activity's onCreate()non è finito, e quindi cercando di accedere alla gerarchia vista qui può causare un crash.
onCreateView ():
Dopo il onCreate()si chiama (in Fragment), le Fragment's onCreateView()si chiama. È possibile assegnare le Viewvariabili ed eseguire qualsiasi inizializzazione grafica . Si prevede di restituire un Viewda questo metodo e questa è la vista principale dell'interfaccia utente, ma se Fragmentnon si utilizzano layout o grafica, è possibile restituire null(accade per impostazione predefinita se non si esegue l'override).
onActivityCreated ():
Come dice il nome, questo viene chiamato dopo che Activityè onCreate()stato completato . Viene chiamato dopo onCreateView()e viene utilizzato principalmente per le inizializzazioni finali (ad esempio, la modifica degli elementi dell'interfaccia utente).
Per riassumere ...
... sono tutti chiamati nel Fragmentma sono chiamati in momenti diversi.
La onCreate()si chiama prima, per fare qualsiasi Inizializzazioni non grafici. Successivamente, è possibile assegnare e dichiarare qualsiasi Viewvariabile in cui si desidera utilizzare onCreateView(). Successivamente, utilizzare onActivityCreated()per eseguire le inizializzazioni finali che si desidera eseguire una volta che tutto è stato completato.
Se vuoi visualizzare la documentazione ufficiale di Android, puoi trovarla qui:
-
-
-onCreate()onCreateView()onActivityCreated()
Ci sono anche alcune domande / risposte leggermente diverse, ma meno sviluppate qui su Stack Overflow:
onCreateView.
Per chiunque cerchi una risposta concisa e pittorica:
https://hanaskuliah.wordpress.com/2015/12/07/android-5-development-part-6-fragment/
E,
onActivityCreated()è ora obsoleto come Fragments Versione 1.3.0-alpha02
Il metodo onActivityCreated () è ora obsoleto. Il codice che tocca la vista del frammento dovrebbe essere eseguito in onViewCreated () (che viene chiamato immediatamente prima di onActivityCreated ()) e l'altro codice di inizializzazione dovrebbe essere in onCreate (). Per ricevere una richiamata specificamente quando l'attività onCreate () è completa, un LifeCycleObserver deve essere registrato sul ciclo di vita dell'attività in onAttach () e rimosso una volta ricevuta la richiamata onCreate ().
Informazioni dettagliate sono disponibili qui