Android SherlockBar中的碎片附加错误

Android SherlockBar中的碎片附加错误,android,actionbarsherlock,android-actionbar,Android,Actionbarsherlock,Android Actionbar,我使用夏洛克酒吧(http://actionbarsherlock.com/). 有TabListener的代码: public class TabListener implements ActionBar.TabListener { private String mTag; private Fragment mFragment; public TabListener(String tag) { mTag = tag; // C

我使用夏洛克酒吧(http://actionbarsherlock.com/). 有TabListener的代码:

public class TabListener implements ActionBar.TabListener {

    private String mTag;
    private Fragment mFragment;


    public TabListener(String tag) {

        mTag = tag;


        // Check to see if we already have a fragment for this tab, probably
        // from a previously saved state.  If so, deactivate it, because our
        // initial state is that a tab isn't shown.
        mFragment = getSupportFragmentManager().findFragmentByTag(mTag);
        if (mFragment != null && !mFragment.isDetached()) {
            FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
            ft.detach(mFragment);
            ft.commit();
        }
    }

    public void onTabSelected(Tab tab) {
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
        if (mFragment == null) {
            if((tab.getPosition()==0) || (tab.getPosition()==1)) {
                mFragment = new MainListFragment(ctx, ONLINE_TYPE);
            } else {
                mFragment = new SimpleFragmentf();

            }
            ft.add(com.lib.reader.R.id.root2, mFragment, mTag);
            ft.addToBackStack(null);
            ft.commit();
        } else {
            ft.attach(mFragment);
            ft.commit();
        }
    }

    public void onTabUnselected(Tab tab) {
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
        ft.detach(mFragment);
        ft.commit();
    }

    @Override
    public void onTabReselected(Tab tab) {
        //To change body of implemented methods use File | Settings | File Templates.
    }
}
视图的部分代码是:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    LinearLayout v = (LinearLayout)inflater.inflate(R.layout.main, container, false);
    v.addView(pager);
    return v;
}
所有工作,但当我第二次选择任何选项卡时-我得到错误:

The specified child already has a parent. You must call removeView() on the child's parent first.

我想,附加功能中存在这个错误,但是如何解决这个问题呢?

您不能像那样向viewpager添加视图。例如,查看Jake Wharton的演示,了解viewpagers的正确实现