我已将3个片段添加到我的活动
String name = "fragment1"; // and ..2 and ..3
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.content_frame, fragment, name);
fragmentTransaction.addToBackStack(name);
fragmentTransaction.commit();
最后添加的(第三个)片段现在显示在顶部。 现在我想恢复到第一个添加片段。但是怎么样? 我可以用
找到这个片段FragmentManager fragmentManager = getSupportFragmentManager();
Fragment firstFragment = fragmentManager.findFragmentByTag("fragment1");
如果我拨打fragmentManager.getFragments()
,我仍然可以找到所有三个片段。
如何将firstFragment
带回顶部,让它再次可见?
答案 0 :(得分:2)
您可以隐藏您的2nd
和3rd
片段,并使您的1st fragment
可见。因此,您将获得第一个片段显示在顶部而其他片段不可见的效果。
<强>溶液强>
使用FragmentTransaction's show and hide method
。你需要找到所有片段并调用FragmentTransaction
来显示和隐藏第二和第三个片段。
答案 1 :(得分:0)
如果我想切换到fragment
,请在我的应用中执行此操作:
FragmentTransaction transaction = getFragmentManager().beginTransaction();
if (fragment.isAdded())
{
transaction.show(fragment);
}
else
{
transaction.replace(R.id.container, fragment);
}
transaction.addToBackStack(null);
transaction.commit();
请注意使用show
。
答案 2 :(得分:0)
最终得到了这个:
/**
* @param tag name of the fragment to resume and to bring to top
* @return true if fragment has been found
*/
private boolean bringFragmentToTop(String tag) {
FragmentManager fragmentManager = getSupportFragmentManager();
Fragment fragment = fragmentManager.findFragmentByTag(tag);
if (fragment != null) {
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
for (Fragment f : fragmentManager.getFragments()) {
if (f == fragment)
fragmentTransaction.show(f);
else
fragmentTransaction.hide(f);
}
fragmentTransaction.commit();
return true;
}
return false;
}