FragmentPagerAdapter getItem is not called
Using a FragmentStatePagerAdapter
didn't fully fix my problem which was a similar issue where onCreateView
was not being called for child fragments in the view pager. I am actually nesting my FragmentPagerAdapter
inside of another Fragment
therefore the FragmentManager
was shared throughout all of them and thus retaining instances of the old fragments. The fix was to instead feed an instance of the getChildFragmentManager
to the constructor of the FragmentPagerAdapter
in my host fragment. Something like...
FragmentPagerAdapter adapter = new FragmentPagerAdapter(getChildFragmentManager());
The getChildFragmentManager()
method is accessible via a fragment and this worked for me because it returns a private FragmentManager
for that fragment specifically for situations in which nesting fragments is needed. I hope this helps someone who may be having the same problem I was!!
- Keep in mind however to use
getChildFragmentManager()
your minimum API version must be atleast17 (4.2)
, so this may throw a wrench in your gears. Of course, if you are using fragments from the support library v4 you should be okay.
KISS Answer:
Simple use FragmentStatePagerAdapter instead of FragmentPagerAdapter.
I got the answer.. Firstly I thought to delete this question as I am doing a very silly mistake but this answer will help someone who is facing the same problem that Instead of FragmentPagerAdapter
, use FragmentStatePagerAdapter
.
As @BlackHatSamurai mentioned in the comment:
The reason this works is because
FragmentStatePagerAdapter
destroys as Fragments that aren't being used.FragmentPagerAdapter
does not.