我有一个带有ListView导航抽屉的Android应用程序,能够打开几个不同的片段。我遇到了一个问题,我允许用户点击打开一个片段,即使它是当前显示的片段。 (此功能是必要的)
如果单击列表项,这是打开片段B的逻辑:
from a import *
此代码正常工作,直到我单击打开当前打开的片段。注意弹出backstack的代码,以便完成当前片段并打开相同类型的新片段。
所以这就是问题所在: 假设我单击片段A,然后单击片段B,然后再次单击片段B.在弹出Backstack以删除旧片段b并添加新片段b之间,片段A onCreateView和onResume都运行。在创建片段B的新实例时,如何避免加载片段A?
谢谢!
--- ---编辑 发布解决方案如下这似乎有效。
答案 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) {}