替换 SingleTask 活动中的片段

Posted

技术标签:

【中文标题】替换 SingleTask 活动中的片段【英文标题】:Replacing fragments in SingleTask activities 【发布时间】:2020-08-20 18:53:38 【问题描述】:

活动 A 是一个 SingleTask 活动。在其 OnCreate 回调中,我创建一个片段并将其附加到布局。

Activity B 现已启动,A 已暂停并调用其 OnSaveInstanceState。

现在以新的意图重新调用活动 A(由于 B 中的交互)。在 OnNewIntent() 中,我根据新意图创建一个新片段并替换之前的片段。

这会导致 IllegalStateException:在 onSaveInstanceState 之后无法执行此操作。

这样做的正确方法是什么?即使调用了 OnNewIntent(),框架似乎仍然认为 A 处于暂停状态。

【问题讨论】:

【参考方案1】:

您需要调用super.onNewIntent(intent) 来更新 FragmentManager 的状态,以便您可以执行 FragmentTransactions。

【讨论】:

以上是关于替换 SingleTask 活动中的片段的主要内容,如果未能解决你的问题,请参考以下文章

用另一个列表替换主活动中的列表并从视图中删除旧列表

根据字符串名称而不是列表视图项位置替换片段并启动活动

使用“singleTask”作为启动模式时无法完全关闭活动

用活动组内的另一个片段替换片段

如何从主要活动中替换片段

在活动中添加/替换后,片段的所有元素都为空