2016-09-27 116 views
0

我有一個選項卡布局和一個視圖尋呼機。選項卡布局總是以單個選項卡開始,但是,我希望能夠通過按鈕動態添加和刪除新選項卡。Android添加和刪除片段到FragmentPagerAdapter

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

是否有可能動態地添加和刪除片段向/從viewpager ?我通過這種方法瞭解到,添加新的片段相對比較簡單。但是,我將如何刪除碎片?

回答

0
public void removeFragment(Fragment fragment, String title) { 
    mFragmentList.remove(fragment); 
    mFragmentTitleList.remove(title); 
    notifyDataSetChanged(); 
}