我有一个带有ListView导航抽屉的Android应用程序,能够打开几个不同的片段 . 我遇到了一个问题,我允许用户点击打开一个片段,即使它是当前显示的片段 . (此功能是必要的)
如果单击列表项,这是打开片段B的逻辑:
FragmentB fragmentB = FragmentB.newInstance();
transaction = ((AppCompatActivity) context).getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.container, fragmentB);
if (lastClicked == Constants.FRAGMENT_B) {
((AppCompatActivity) context).getSupportFragmentManager().popBackStack();
}
transaction.addToBackStack("FragmentB");
try {
transaction.commit();
} catch (IllegalStateException e) {}
lastClicked = Constants.FRAGMENT_B;
此代码正常工作,直到我单击打开当前打开的片段 . 注意弹出backstack的代码,以便完成当前片段并打开相同类型的新片段 .
所以这里的问题是:我说点击片段A,然后点击片段B,然后再次点击片段B.在弹出Backstack以删除旧片段b并添加新片段b之间,片段A的onCreateView和onResume都运行 . 在创建片段B的新实例时,如何避免加载片段A?
谢谢!
---编辑---发布解决方案如下 . 这似乎有效 .
1 回答
我能够自己解决这个问题 . 这是为了防止其他人遇到同样的问题 .