Vikram Bodicherla
Vikram Bodicherla

Reputation: 7123

Fragment lifecycle with respect to it's activity

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?

Upvotes: 28

Views: 43604

Answers (5)

David Aleksanyan
David Aleksanyan

Reputation: 3359

onAttachFragment()-activity is called before onCreate()-activity and after onAttach()-fragment

Upvotes: 0

TapanHP
TapanHP

Reputation: 6181

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

enter image description here

Upvotes: 16

user2239249
user2239249

Reputation:

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...

Upvotes: 0

Vineet Shukla
Vineet Shukla

Reputation: 24031

The official documentation for the Fragment lifecycle explains this clearly - please refer to it and then ask follow-up questions if something is unclear.

Upvotes: 16

BTR Naidu
BTR Naidu

Reputation: 1101

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.

Upvotes: -1

Related Questions