Ошибка в прикреплении фрагмента в SherlockBar - PullRequest
0 голосов
/ 05 марта 2012

я использую бар sherlock (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.
    }
}

Часть кода View:

@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.

Я думаю, что ошибка в функции присоединения, но как ее решить?

1 Ответ

0 голосов
/ 09 марта 2012

Вы не можете добавить вид на просмотрщик, как это.Посмотрите демонстрации Jake Wharton для правильной реализации пейджеров, например.

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

...