Starting Android 4.2, Android supports nested Fragments. The doc doesn't give a lot of explanations regarding nested Fragment
lifecycles but from experience, it appears their lifecycle is really similar to "regular" Fragments
.
It looks like there is one big difference though: child Fragments
are not restored when the parent Fragment
onCreate
method is called. As a consequence, it seems impossible to save/restore a reference to a particular Fragment
:
- Using
getChildFragmentManager.findFragmentByTag(String)
always returnsnull
in parentFragment
onCreate(Bundle)
becausemActive
isnull
. - Using
putFragment
/getFragment
results in aNullPointerException
becausegetFragment
looks for the size of a nullmActive
ArrayList
.
So, my question is quite simple. Is there a correct way to retrieve a reference to a child Fragment
in the parent Fragment
onCreate
method?
What about setRetainInstanceState(true) on your fragment? Could it solve your problem? It solved some problems when I have ChildFragments in a Fragment. I only have to keep a reference to the childfragment in the fragment.
But I allways did that in onCreateView(). Not sure if it will work in onCreate()
Or do you mean something completely different?
I don't think you can in
onCreate
as the view isn't constructed at that time. You can inonViewCreated()
though. The logic I used is:onViewCreated()
, if there is, try to get the child fragmentBy "checking" I mean looking up the fragment by id. I guess by tag should work too.
AFAIK you can't get a child fragment before the view hierarchy is restored or created, but you could do the same at later time, for example in
onActivityCreated()
are u using FragmentPagerAdapter? if not try FragmentPagerAdapter instead of FragmentStatePagerAdapter I realised that have some bug when using FragmentStatePagerAdapter when i have 4 level nest. Sorry my english is poor.