片段PopBackStack()问题

时间:2015-07-13 17:16:14

标签: android android-fragments

我有一个带有ListView导航抽屉的Android应用程序,能够打开几个不同的片段。我遇到了一个问题,我允许用户点击打开一个片段,即使它是当前显示的片段。 (此功能是必要的)

如果单击列表项,这是打开片段B的逻辑:

from a import * 

此代码正常工作,直到我单击打开当前打开的片段。注意弹出backstack的代码,以便完成当前片段并打开相同类型的新片段。

所以这就是问题所在: 假设我单击片段A,然后单击片段B,然后再次单击片段B.在弹出Backstack以删除旧片段b并添加新片段b之间,片段A onCreateView和onResume都运行。在创建片段B的新实例时,如何避免加载片段A?

谢谢!

--- ---编辑 发布解决方案如下这似乎有效。

1 个答案:

答案 0 :(得分:0)

我能够自己解决这个问题。这是为了防止其他人遇到同样的问题。

Fragment oldFragmentB = ((AppCompatActivity) context).getSupportFragmentManager().findFragmentByTag("FragmentB");
FragmentB fragmentB = FragmentB.newInstance();
transaction = ((AppCompatActivity)context).getSupportFragmentManager().beginTransaction();

if (lastClicked == Constants.FRAGMENT_B && oldFragmentB != null) {
    transaction.remove(oldFragmentB);
    transaction.add(R.id.container, fragmentB, "FragmentB");
    transaction.disallowAddToBackStack();
} else {
    transaction.replace(R.id.container, fragmentB, "FragmentB");
    transaction.addToBackStack("FeedFragment");
}

try {
    transaction.commit();
} catch(IllegalStateException e) {}