Android fragment 在堆栈中移动

标签 android android-fragments

想象一下:一个 Activity 有 5 个 fragment 。

Fragment1 -> Fragment2(fragment1打开fragment2,onBackPressed反转操作)

fragment 3 -> fragment 4

这按预期工作,但现在我想这样做:

Fragment5 -> Fragment4 有效,但是当我按下 onBackPressed() 时,我想转到 Fragment3 而不是 Fragment5。当我到达 Fragment3 并按返回退出应用程序时。

为了操纵后台堆栈,我尝试了很多事情。但是这些都不能解决我的问题。我通过 transaction.replace(container,myFragment) 交换 fragment 。

我已经检查了所提供的文档,但我似乎无法找到一种正确的方法来操纵 backstack(或任何标志)

最佳答案

您正在同一 Activity 中的多个 Fragments 之间切换。

所有 FragmentTransaction 都是 addToBackStack commit 之前。这意味着您可以使用以下方法获取用户在 Fragments 之间更改的次数:

int count = getFragmentManager().getBackStackEntryCount();

在某种程度上,您可以识别每个 Fragment 并执行任何您想做的事情。

如果您使用下面的解决方案,您会注意到 getFragmentManager().popBackStack(); 只是让它返回到之前的 Fragment

@Override
public void onBackPressed() {

    int count = getFragmentManager().getBackStackEntryCount();

    if (count == 0) {
        super.onBackPressed();
        //additional code
    } else {
        getFragmentManager().popBackStack();
    }

}

关于Android fragment 在堆栈中移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29894828/

相关文章:

Android 用 fragment 替换 fragment 或启动新 Activity

java - Activity 没有设置 NavController

java - 在 fragment 中显示默认计算器

android - 从另一个 Activity 调用对话

android - onResume() 后无法关闭 AlertDialog

android - 如何在服务类的 oncreate 方法中创建弹出窗口

Android:无法在 fragment 中设置 TextView 值

android - 从 fragment 中的工具栏动态添加和删除微调器

java - Android Graphview - 附加数据

android - 更改菜单中的可绘制颜色