我把我的安卓应用移植到了蜂巢,为了使用碎片,我做了一次大的重构.在我之前的版本中,当我按下Home(主页)按钮时,我会用ACTIVITY_CLEAR_TOP来重置后堆栈.

现在我的应用程序只是一个包含多个片段的单个活动,所以当我按下Home按钮时,我只替换了其中的一个片段.如何才能在不使用带有ACTIVITY_CLEAR_TOP标志的startActivity的情况下清除后端堆栈?

推荐答案

I posted something similar here

约阿希姆的回答来自黛安·哈克伯恩(Dianne Hackborn):

http://groups.google.com/group/android-developers/browse_thread/thread/d2a5c203dad6ec42

我最后只是用了:

FragmentManager fm = getActivity().getSupportFragmentManager();
for(int i = 0; i < fm.getBackStackEntryCount(); ++i) {    
    fm.popBackStack();
}

但同样可以使用类似的东西:

((AppCompatActivity)getContext()).getSupportFragmentManager().popBackStack(String name, FragmentManager.POP_BACK_STACK_INCLUSIVE)

这将弹出所有状态到指定的状态.然后你就可以用你想要的来替换片段了

Android相关问答推荐

致命信号6(SIGABRT)MAUI应用程序在android net发布时崩溃.8、使用强制屏幕方向和并发GC

替换- prop -中的值(adb shell getprop)

在以XML格式设置完整屏幕视图时可见App Compat按钮

如何将Unicode符号作为文本居中放置在布局中的按钮(Android XML)中?

如何在Jetpack Compose中向SearchBar添加边框

Android 12+BLE字节不同

使用不同的gradle文件导入外部库

Android 构建失败:找不到 flexbox2.0.1.aar

当父布局的背景为浅色时,Android ProgressBar 背景 colored颜色 变为灰色

通知使用默认语言,屏幕显示多种语言,同时通过 AppCompatDelegate 设置应用程序语言

java.lang.ExceptionInInitializerError -- 原因:java.lang.NullPointerException

将 CircularProgressIndicator 添加到按钮而不增加其高度

在 Android Studio 中获取更新版本的 Picasso 库的错误警告消息

围绕动态大小的内容包装 Jetpack Compose Row?

Material 3 中的 ModalBottomSheet 用于 compose

Gradle 构建错误:找不到 semver4j-0.16.4-nodeps.jar

在alert 对话框生成器中启动协程

如何在jetpack compose中创建自定义rememberState?

不能在kotlin的lazycolumn中使用列表

为什么在try 实例化 Mediaplayer 时会出现 NullPointerException?安卓Kotlin