Atlas91
Atlas91

Reputation: 5904

Android fragment empty in viewpager when I come back in

I have a navigation drawer in which there is a ViewPager that extends a Fragment. When i click the item of drawer i open the viewpager in which there are three fragments. It works perfectly. but if i click again the same drawer item to open the viewpager another one time, the viewpager is empty.. I can see the tabs but not the fragments in there. This is the Viewpager:

public class ViewPagerManager extends Fragment {
    public static ViewPagerManager instance = null;
    Toolbar toolbar;
    public static PagerSlidingTabStrip tabs;
    public MyPagerAdapter adapter;
    public ViewPager pager;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.activity_tabbed, container, false);
        instance = this;
        adapter = new MyPagerAdapter(getFragmentManager());

        pager = (ViewPager)view.findViewById(R.id.pager);
        tabs = (PagerSlidingTabStrip)view.findViewById(R.id.tabs);

        pager.setAdapter(adapter);
        tabs.setViewPager(pager);

        pager.setOffscreenPageLimit(3);

        adapter.notifyDataSetChanged();
        pager.invalidate();
        return view;
    }

    public class MyPagerAdapter extends FragmentPagerAdapter {

        private final String[] TITLES = { "One", "Two", "Three" };

        public MyPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return TITLES[position];
        }

        @Override
        public int getCount() {
            return TITLES.length;
        }
        @Override
        public int getItemPosition(Object object) {
            return POSITION_NONE;

        }


        @Override
        public Fragment getItem(int position) {
            switch (position) {
            case 0:
                // Top Rated fragment activity
                return new FragmentOne();
            case 1:
                // Games fragment activity
                return new FragmentTwo();
            case 2:
                // Games fragment activity
                return new FragmentThree();

            }

            return null;
        }
    }
}

Is it normal? How can i solve? If could help i'm using PagerSlidingTabStrip library.

Upvotes: 6

Views: 1661

Answers (2)

Krish
Krish

Reputation: 3885

Use this code

 adapter = new MyPagerAdapter(getChildFragmentManager()); 

instead of

adapter = new MyPagerAdapter(getFragmentManager()); 

Upvotes: 23

Mann
Mann

Reputation: 661

Try to redraw the last selected page when you return to the fragment. I think the viewpager is not cached and you need to reselect the last item. You can override the onresume method.

Upvotes: 0

Related Questions