Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 724
Atlas91 Avatar asked Jan 14 '15 18:01

Atlas91


People also ask

How do I refresh ViewPager fragments?

OnPageChangeListener is the correct way to go, but you will need to refactor your adapter a bit in order to keep a reference to each Fragment contained in the FragmentPagerAdapter. Then, instead of creating a new Fragment, use the one contained in the adapter: mViewPager. addOnPageChangeListener(new ViewPager.

Can I use ViewPager with views not with fragments?

yes...you can use View instead of Fragment in viewpager. Here you can Find Whole example that will help you to achieve Viewpager without Fragment. Go through this documentation. Save this answer.

Can you put a ViewPager in a fragment?

Steps for implementing viewpager: Adding the ViewPager widget to the XML layout (usually the main_layout). Creating an Adapter by extending the FragmentPagerAdapter or FragmentStatePagerAdapter class.

Is ViewPager deprecated?

Called when the host view is attempting to determine if an item's position has changed. This method may be called by the ViewPager to obtain a title string to describe the specified page. This method is deprecated.


1 Answers

Use this code

 adapter = new MyPagerAdapter(getChildFragmentManager()); 

instead of

adapter = new MyPagerAdapter(getFragmentManager()); 
like image 91
Krish Avatar answered Sep 20 '22 12:09

Krish