0

I have created tabs. For this I have one fragment in which I have created tabs and view pager. Also created two fragments.

Showing the lists in the fragments.

Now the problem is when the app is run first time the MyTrips fragment when first loaded can see the lists in both tabs but if I move back and from options menu of app choose MyTrips fragment it does not show any list in both tabs.

As I did debug I found that fragments are not getting added second time. I am calling viewPagerAdapter onCreateView of a fragment.

So may be it is loading only once?

MyTripsFragment

public class MyTrips extends Fragment {

    private ViewPager viewPager;
    private TabsPagerAdapter mAdapter;
    private int Numboftabs =2;
    private TabLayout tabLayout;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_my_trips, container, false);


        mAdapter =  new TabsPagerAdapter(getActivity().getFragmentManager(),Titles,Numboftabs);
        viewPager = (ViewPager)view.findViewById(R.id.pager);

        setupViewPager(viewPager);


        tabLayout = (TabLayout)view.findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(viewPager);

        return view;
    }

    private void setupViewPager(ViewPager viewPager) {
        ViewPagerAdapter adapter = new ViewPagerAdapter(getFragmentManager());
        adapter.addFragment(new ScheduledTravelFragment(), "Scheduled Travel");
        adapter.addFragment(new TravelHistoryFragment(), "Travel History");
        viewPager.setAdapter(adapter);
    }


    class ViewPagerAdapter extends FragmentPagerAdapter {
        private final List<Fragment> mFragmentList = new ArrayList<>();
        private final List<String> mFragmentTitleList = new ArrayList<>();

        public ViewPagerAdapter(FragmentManager manager) {
            super(manager);
        }

        @Override
        public Fragment getItem(int position) {
            return mFragmentList.get(position);
        }

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

        public void addFragment(Fragment fragment, String title) {
            mFragmentList.add(fragment);
            mFragmentTitleList.add(title);
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return mFragmentTitleList.get(position);
        }
    }

}

Please guide with this thank you..

Quick learner
  • 10,632
  • 4
  • 45
  • 55
Sid
  • 2,792
  • 9
  • 55
  • 111

1 Answers1

1

Use FragmentStatePagerAdapter instead of FragmentPagerAdapter

Read this for more details Difference between them

Quick learner
  • 10,632
  • 4
  • 45
  • 55
  • 1
    i am glad it worked , i had the same problem and took 2 days to find the solution and reason , Happy Coding – Quick learner May 27 '17 at 19:18
  • hello, I this worked but I have home activity in that I have options menu so onClick of options menu I am replacing the fragments, now if I replaced myTrips fragment first time I can see the list, again if I go back to main fragment and see the myTrips screen I can see the list but from myTrips screen if I select any other options menu and replace another fragment, then on pressing back I cant see the list in myTrips fragment it shows empty. What to do for this? Thank you.. @quick learner – Sid May 30 '17 at 06:10