0

私はシャーロック バー (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;
}

すべて動作しますが、2 回目に任意のタブを選択すると、エラーが発生します。

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

アタッチ機能のエラーだと思いますが、どうすれば解決できますか?

4

1 に答える 1

0

そのようなビューページャーにビューを追加することはできません。たとえば、ビューページャーの適切な実装については、Jake Wharton のデモを確認してください。

https://github.com/JakeWharton/Android-ViewPagerIndicator

于 2012-03-09T09:15:58.697 に答える