当前位置: 代码迷 >> Android >> actionbar 动态剔除tab失败
  详细解决方案

actionbar 动态剔除tab失败

热度:108   发布时间:2016-05-01 12:05:19.0
actionbar 动态删除tab失败
适配器的代码如下

public class TabsAdapter extends FragmentPagerAdapter
        implements ActionBar.TabListener, ViewPager.OnPageChangeListener {
 


private final Context mContext;
    private final ActionBar mActionBar;
    private final ViewPager mViewPager;
    private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>();

    static final class TabInfo {
        private final Class<?> clss;
        private final Bundle args;
        private Fragment fragment;

        TabInfo(Class<?> _class, Bundle _args) {
            clss = _class;
            args = _args;
        }
    }

    public TabsAdapter(Activity activity, ViewPager pager) {
        super(activity.getFragmentManager());
        mContext = activity;
        mActionBar = activity.getActionBar();
        mViewPager = pager;
        mViewPager.setAdapter(this);
        mViewPager.setOnPageChangeListener(this);
    }

    public void addTab(ActionBar.Tab tab, Class<?> clss, Bundle args) {
        TabInfo info = new TabInfo(clss, args);
        tab.setTag(info);
        tab.setTabListener(this);
        info.fragment = Fragment.instantiate(mContext, info.clss.getName(), info.args);
       
        
        mTabs.add(info);
        mActionBar.addTab(tab);
        notifyDataSetChanged();
    }
    
    public void removeTab(ActionBar.Tab tab) {
        mTabs.remove(tab.getTag());
        mActionBar.removeTab(tab);

        notifyDataSetChanged();
    }

    @Override
   public void destroyItem(ViewGroup container, int position, Object object) {
   // TODO Auto-generated method stub
   super.destroyItem(container, position, object);
    FragmentManager manager = ((Fragment) object).getFragmentManager();
         FragmentTransaction trans = manager.beginTransaction();
         trans.remove((Fragment) object);