3

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

当前的应用程序流程是这样MainActivity的(片段 A -> 片段 B -> 片段 C)。

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

我知道活动有这样的目的,但在显示我的通知之前我TaskStackBuilder找不到任何用于构建片段的东西。backStack

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

4

1 回答 1

1

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

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

    public void addFragmentOnTop(Fragment fragment) {
        getSupportFragmentManager()
            .beginTransaction()
            .replace(R.id.container, fragment)
            .addToBackStack(null)
            .commit();
    }
于 2019-09-03T10:28:37.633 回答