获取后栈中的最后一个片段

时间:2013-07-10 03:38:33

标签: android android-fragments back-stack

我看过这篇文章,但此处发布的解决方案对我不起作用:get the latest fragment in backstack

当我用另一个片段替换片段时,我使用:

FragmentManager manager = getSupportFragmentManager();
    FragmentTransaction ft = manager.beginTransaction();

    ft.replace(android.R.id.tabcontent, fragment, tag);
    ft.addToBackStack(null);

    ft.commit();

因此,请注意我正在使用标签来检测任何片段。

我的问题尤其如下:

假设我有fragment_A,fragment_B和fragment_C。我可以从fragment_A或fragment_B获取fragment_C,并且根据调用的父级,我必须做一些特别的事情。所以,我再次需要恢复后堆栈中的最后一个FRAGMENT。

当我尝试做的时候:

FragmentManager fm = getSupportFragmentManager();

        for(int entry = 0; entry < fm.getBackStackEntryCount(); entry++){
            String ide = fm.getBackStackEntryAt(entry).getName();
           Log.i("TAG", "Found fragment: " + ide);
        }

我得到空值。如果我改用getId(),我会得到数字,所以我试着这样做:

int id = fm.getBackStackEntryAt(entry).getId();
Fragment fragment = fm.findFragmentById(id);
Log.i("TAG", "Found fragment: " + fragment.getTag());

但是我得到了空的..我不知道还能做什么,所以任何帮助都将受到赞赏。

编辑:我在onBackPressed(){...}

中调用此方法

1 个答案:

答案 0 :(得分:16)

如果您使用BackStackEntry.getName(),则应为:

ft.replace(android.R.id.tabcontent, fragment, tag);
ft.addToBackStack(tag);