getFragments()方法只返回viewpager Android的片段

时间:2014-09-05 22:29:27

标签: android android-fragments android-viewpager

我在我的应用中使用了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();

为什么我这样做是因为在某些异步调用完成时,我想刷新当前对用户可见的片段。

谢谢, 罗尼

2 个答案:

答案 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)

替换片段看起来是一种低效的解决方案,因为它不必要地重新创建片段。现在我已经通过为所有片段保留了我自己的列表来解决它。