I am having trouble understanding how Android deals with fragments (particularly nested fragments) on an orientation change.
Say I have an activity a1 that loads a fragment f1. f1 then loads multiple instances of fragment f2 into itself in the oncreateview() method.
Now my activity a1 has this in (oncreate()):
if (savedInstanceState != null)
return;
to make sure that multiple instance of f1 don’t get loaded. I do the same sort of thing in f1 to makes sure duplicate f2 instances don’t get loaded.
However, my class f1 needs to reference the f2 instances later on. Currently I am storing them in an ArrayList in the f1 object, however after an orientation change this ArrayList is empty and I think the f2 instances will be different objects any way.
So my question is, how is the best way to have nested fragments and to keep a reference to them after an orientation change?
You can use FragmentManger to find references to other fragments.
You can an get a reference to another fragment by doing something like:
or
If you have not already seen it take a look at this blog post.
In your case where you have multiple instances of the same fragment you can set a tag when you create the fragment and use that instead of the id when looking for the fragment.