Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ViewPager in TabFragment is not loading a second time

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

like image 214
Daan Olislagers Avatar asked Jun 06 '13 11:06

Daan Olislagers


People also ask

Is ViewPager deprecated?

Technically, ViewPager is not deprecated, but the two concrete PagerAdapter implementations — FragmentPagerAdapter and FragmentStatePagerAdapter — are deprecated.


1 Answers

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.

like image 68
Daan Olislagers Avatar answered Sep 17 '22 20:09

Daan Olislagers