Java Android向FragmentPagerAdapter添加和删除片段

Java Android向FragmentPagerAdapter添加和删除片段,java,android,android-fragments,fragmentpageradapter,Java,Android,Android Fragments,Fragmentpageradapter,我有一个选项卡布局和一个视图寻呼机。选项卡布局总是从单个选项卡开始,但是,我希望能够通过按钮动态添加和删除新选项卡 在onCreate中: mViewPager = (ViewPager) view.findViewById(R.id.viewpager); mToolbar = (Toolbar) view.findViewById(R.id.toolbar); mTabLayout = (TabLayout) view.findViewById(R.id.tabs)

我有一个选项卡布局和一个视图寻呼机。选项卡布局总是从单个选项卡开始,但是,我希望能够通过按钮动态添加和删除新选项卡

在onCreate中:

mViewPager  = (ViewPager)   view.findViewById(R.id.viewpager);
mToolbar    = (Toolbar)     view.findViewById(R.id.toolbar);
mTabLayout  = (TabLayout)   view.findViewById(R.id.tabs);

setupViewPager(mViewPager);
mTabLayout.setupWithViewPager(mViewPager);
setupViewPager方法:

private void setupViewPager(ViewPager viewPager) {
    mAdapter = new ViewPagerAdapter(getActivity().getSupportFragmentManager());
    mAdapter.addFragment(new CycleFragment(), "TEST TAB");
    viewPager.setAdapter(mAdapter);
}
viewPageAdapter类:

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);
    }
}
class ViewPagerAdapter扩展了FragmentPagerAdapter{
私有最终列表MFFragmentList=new ArrayList();
私有最终列表MFFragmentTitleList=new ArrayList();
公共视图页面编辑器(碎片管理器){
高级经理;
}
@凌驾
公共片段getItem(int位置){
返回MFFragmentList.get(位置);
}
@凌驾
public int getCount(){
返回MFFragmentList.size();
}
public void addFragment(片段片段,字符串标题){
添加(片段);
MFFragmentTitleList.add(标题);
}
@凌驾
公共字符序列getPageTitle(int位置){
返回MFFragmentTitleList.get(位置);
}
}
是否可以在viewpager中动态添加和删除片段?我理解通过这种方法,添加新片段相对简单。但是,如何删除片段?

在addFragment()方法中,您缺少notifyDataSetChanged();否则它将在addFragment()方法中崩溃,因为您丢失了notifyDataSetChanged();否则它会崩溃
public void removeFragment(Fragment fragment, String title) {
    mFragmentList.remove(fragment);
    mFragmentTitleList.remove(title);
    notifyDataSetChanged(); 
}