Situation
My activity waits on an Async operation and after it hears back from async operation, it needs to pass information to 2 fragments inside it.
Requirement
1. Both fragments need their onCreateView
calls to be done for them to have their layouts loaded,
2. They need for themselves to be attached to their activity so that getActivity()
works.
I wrote a setData()
method in both the fragments and am looking for the "correct" place in the activity's lifecycle to invoke them.
onCreate()
of the activity does not work, onStart()
of the activity does not work and onStart()
of the fragment does not work.
Nothing works, what am I missing here?
The official documentation for the Fragment lifecycle explains this clearly - please refer to it and then ask follow-up questions if something is unclear.
This Image will be helpful to understand both life cycles together.
As many people complaints and it is somewhat valid argument that this life cycle is too complicated, in Google I/O 2018,They have suggested to use Architecture component Framework. Please check this Docs
when you are at Activity2---->backpress--->Fragment2(Activity1)
---means Activity1
again attach from fragment2
so on OnAactivityCreated()
method Activity1
is completely loaded ....so at that we can call setData()
method of your Activity1...
onAttachFragment()-activity is called before onCreate()-activity and after onAttach()-fragment
Call onDestroy on onStop of your fragment. This should call onCreate when the fragment is launched.
Let me know if works as an ideal solution for your problem.