列表未使用View寻呼机显示在选项卡中

时间:2017-05-27 18:30:17

标签: java android android-fragments arraylist adapter

我创建了标签。为此,我有一个片段,我在其中创建了选项卡和查看寻呼机。还创建了两个片段。

显示片段中的列表。

现在的问题是当第一次运行应用程序时首次加载的MyTrips片段可以看到两个选项卡中的列表,但如果我向后移动并从应用程序的选项菜单中选择MyTrips片段,则它不会在两个选项卡中显示任何列表。

正如我调试的那样,我发现第二次没有添加碎片。我正在调用片段的viewPagerAdapter onCreateView。

所以可能只加载一次?

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);
        }
    }

}

请指导,谢谢..

1 个答案:

答案 0 :(得分:1)

使用FragmentStatePagerAdapter代替FragmentPagerAdapter

阅读本文了解更多详情 Difference between them