Sto usando FragmentActivity e Fragments.Dopo la rotazione, onCreate() Frammento viene chiamato prima onCreate() FragmentActivity
All'avvio dell'applicazione:
FragmentActivity onCreate() <------
FragmentActivity onStart()
FragmentActivity onResume()
Fragment onAttach()
Fragment onCreate() <------
Fragment onCreateView()
Fragment onActivityCreated()
Fragment onStart()
Fragment onResume()
Tutto è OK, FragmentActivity onCreate() viene chiamato prima Fragment onCreate(). E quando ho ruotare:
Fragment onPause()
FragmentActivity onPause()
Fragment onStop()
FragmentActivity onStop()
Fragment onDestroyView()
Fragment onDestroy()
Fragment onDetach()
FragmentActivity onDestroy()
---
Fragment onAttach()
Fragment onCreate() <----------
FragmentActivity onCreate() <---------
Fragment onCreateView()
Fragment onActivityCreated()
Fragment onStart()
FragmentActivity onStart()
FragmentActivity onResume()
Fragment onResume()
Fragment onCreate() viene chiamato prima FragmentActivity onCreate(). Perché è incoerente?
In FragmentActivity onCreate() Genero alcuni dati, che si ottiene Framment onCreate(). A causa di questo strano comportamento ho dovuto spostare il mio codice da Fragment onCreate() a Fragment onCreateView() per essere sicuro che i miei dati fossero stati generati prima.
Sto usando FragmentStatePagerAdapter per contenere Frammenti, forse questa è la ragione?
Allora, che cosa sei tu? soluzione? – levi
@levi Compila le tue Viste con i dati nel metodo di Frammento di onActivityCreated(). Oppure ripensare la tua architettura, nella maggior parte dei casi non è necessario ottenere i dati dall'attività dell'host. E utilizzare i caricatori se si dispone di ListView/RecyclerView con dati dinamici. Questa è stata la mia soluzione finale perché avevo List in ogni frammento. È anche possibile utilizzare la libreria bus di messaggi (EventBus, Otto, ...) per avere un'architettura ancora più pulita. – AppiDevo