恢复/使顶部活动(但隐藏)片段

时间:2014-08-20 19:58:39

标签: android android-fragments

我已将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带回顶部,让它再次可见?

3 个答案:

答案 0 :(得分:2)

您可以隐藏您的2nd3rd 片段,并使您的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;
}