android - 为推送通知构建 fragment backStack

标签 android android-fragments fragment-backstack taskstackbuilder

当用户点击状态栏中的通知时,我正在使用 FCM 显示 fragment 。

当前的应用程序流是这个 MainActivity( fragment A -> fragment B -> fragment C)。

但是,当用户点击通知时(无论应用程序是否正在运行),我想显示 Fragment C,同时仍然提供正确的后退导航,因此在按下后退键时,用户再次按下时将被带到 Fragment B 和 Fragment A。

我知道 Activity 有 TaskStackBuilder 用于此目的,但在显示我的通知之前,我找不到任何用于为 fragment 构建 backStack 的内容。

知道如何构建堆栈吗?我尝试将所有 fragment 添加到事务中,然后在添加 fragment C 之前提交,但在第二次提交时我得到 IllegalStateException: commit already called

最佳答案

fragment 堆栈的手动处理很困难。我建议您查看 Navigation Component .它将允许通过适当的返回堆栈处理(NavDeepLinkBuilder 类)构建显式深层链接。

显示您的代码。可能您必须为每个 fragment 创建新事务并提交操作。使用此方法添加 A、B 和 C:

    public void addFragmentOnTop(Fragment fragment) {
        getSupportFragmentManager()
            .beginTransaction()
            .replace(R.id.container, fragment)
            .addToBackStack(null)
            .commit();
    }

关于android - 为推送通知构建 fragment backStack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57769596/

相关文章:

Java android Linearlayout设置两种颜色

Android - 从后台返回时的空白 fragment

android - Nexus 6 设备和模拟器之间的不同后台行为

javascript - 如何使用手机指纹传感器作为生物识别(指纹)扫描仪

java - 可以使用 GPS 预测预计到达时间的 Android 应用程序的设计和开发

android - Google Analytics 和 native 移动应用程序 - Android 和 iOS SDK

android - fragment : NullPointer with Adapter 内的 ViewPagerIndicator

android - 防止在 FragmentPagerAdapter 中重新加载 WebView?

java - 使用 MapView 嵌套 fragment

android - 将 fragment 从一个 Activity 加载到另一个已经在后台的 Activity