ViewPager in TabFragment is not loading a second time

AndroidAndroid FragmentsAndroid ViewpagerAndroid Nested-Fragment

Android Problem Overview


I'm trying to make an app that has a ViewPager in a Fragment that is part of a TabHost. Everything works out fine. I have my tabbar, I can switch tabs. When I switch to the tab with the ViewPager, all is shown correctly.

However, as soon as I leave this tab with the ViewPager and return this tab, my content is not shown. If I scroll to the side twice I do see my next image and if I go back two times I also see the images are loaded (probably the offscreenloaded).

See that my TabFragment is being reinstantiated when I return to it but the fragments in the ViewPager aren't.

@Override
public void onActivityCreated(Bundle savedInstanceState) {

	mProjectText = (TextView) getView().findViewById(R.id.projectText);
	mProjectText.setText(mActiveProject.getInspirationText());
	
	mAdapter = new AlbumAdapter(getFragmentManager(), mActiveProject.getInspiration());
	
    mPager = (ViewPager)getView().findViewById(R.id.pager);
    mPager.setAdapter(mAdapter);

	super.onActivityCreated(savedInstanceState);
}

public class AlbumAdapter extends FragmentStatePagerAdapter {

private ArrayList<ProjectContent> mItems;

public AlbumAdapter(FragmentManager fm, ArrayList<ProjectContent> items) {
	super(fm);
	this.mItems = items;
}

@Override
public Fragment getItem(int position) {
	return AlbumContentFragment.newInstance(mItems.get(position));
}

@Override
public int getCount() {
	return mItems.size();
}

@Override
public int getItemPosition(Object object) {
	return POSITION_NONE;
}}

The mockup for the app

Android Solutions


Solution 1 - Android

I found the problem. It took me two days, but hey, it's fixed.

Instead of using

mAdapter = new AlbumAdapter(getFragmentManager(), mActiveProject.getInspiration());

You should use

mAdapter = new AlbumAdapter(getChildFragmentManager(), mActiveProject.getInspiration());

So much for 5 characters.

Solution 2 - Android

I been searching this for long finally found a solution.Change your page adapter instance FragmentPagerAdapter to FragmentStatePagerAdapter example:

class PageAdapter extends FragmentStatePagerAdapter {

Solution 3 - Android

you should use getChildFragmentManager() instead of getFragmentManager() and FragmentStatePagerAdapter() instead of FragmentPagerAdapter().Hope it will be useful for someone.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDaan OlislagersView Question on Stackoverflow
Solution 1 - AndroidDaan OlislagersView Answer on Stackoverflow
Solution 2 - Androidrajesh vView Answer on Stackoverflow
Solution 3 - AndroidAkhtarView Answer on Stackoverflow