我在我的应用中使用了View pager作为我的列表片段(A,B,C,D)。在点击列表视图(例如片段A)中的项目时,显示详细的片段(E)。由于显而易见的原因,片段E不是视图寻呼机的一部分。
此时,如果我使用fragmentmanager的getFragments()方法,我只获取视图寻呼机片段(A,B,C,D)而不是E.在迭代视图寻呼机片段时,其中一个片段是尽管片段E位于顶部且可见,但是视图寻呼机看起来是可见的。
使用非视图寻呼机片段替换视图寻呼机片段的正确方法是什么?为什么片段E没有添加到片段管理器堆栈中?
这是我用片段E替换片段A时使用的代码段。
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.detach(fragA);
fragmentTransaction.add(viewId, fragE);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
为什么我这样做是因为在某些异步调用完成时,我想刷新当前对用户可见的片段。
谢谢, 罗尼
答案 0 :(得分:0)
FragmentTransaction fragmentTransaction =getActivity().getSupportFragmentManager().beginTransaction();
// Replace the fragment in the container view with the E fragment,
// and add the transaction to the back stack
fragmentTransaction.replace(R.id.container,FragmentE.newInstance(),MainActivity.FRAGMENT_TAG_E);
fragmentTransaction.addToBackStack(null); // Commit the transaction
fragmentTransaction.commit();
答案 1 :(得分:0)
替换片段看起来是一种低效的解决方案,因为它不必要地重新创建片段。现在我已经通过为所有片段保留了我自己的列表来解决它。