片段靠背堆操纵

时间:2014-06-06 08:07:47

标签: android android-fragments back-stack

我想在序列f1,f2,f3中添加片段到后面的堆栈...如果我从f3或f2开始我应该到达f1然后在backstack中没有任何内容。 这是我使用的代码:

public void openFragment(BaseFragment baseFragment, Bundle data) {

    if (baseFragment != null) {

        if (data != null)
            baseFragment.setArguments(data);
        Log.d(TAG, "openFragment" + baseFragment);

        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction ft = fragmentManager.beginTransaction();

        String tag1 = getString(baseFragment.getTitleResourceId());

        ft.replace(R.id.fragment_main, baseFragment, tag1);
        ft.addToBackStack(null);
        ft.commit();

        if (baseFragment.getTitleResourceId() > 0)
            mCurrentTitle = baseFragment.getTitleResourceId();

    }

}

我尝试使用以下但没办法:

public void openFragment(BaseFragment baseFragment, Bundle data) {

    if (baseFragment != null) {

        if (data != null)
            baseFragment.setArguments(data);
        Log.d(TAG, "openFragment" + baseFragment);

        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction ft = fragmentManager.beginTransaction();

        String tag1 = getString(baseFragment.getTitleResourceId());

        // Fragment frgExist = fragmentManager.findFragmentByTag(tag1);
        ft.replace(R.id.fragment_main, baseFragment, tag1);
        // if (frgExist == null)

        ft.addToBackStack(null);
        ft.commit();

        if (baseFragment.getTitleResourceId() > 0)
            mCurrentTitle = baseFragment.getTitleResourceId();

    }

}

* BaseFragment只是抽象类扩展片段,用于设置标题。 感谢。

1 个答案:

答案 0 :(得分:0)

修改

使用this添加到Backstack。作为参数,您可以给出一个字符串,例如:“FirstFragment”。然后使用this弹出backstack。您可以提供一个字符串作为参数,该字符串应该是“FirstFragment”。通过这种方式,您可以弹出所有内容,直到第一个片段。


尝试仅将第一个(从f1到f2)添加到backstack。如果我是对的,即使你在f3中也总会回到f1,因为你没有参考f2和f3之间的交易。