【问题标题】:Get specific Activity from backstack从 backstack 获取特定的 Activity
【发布时间】:2019-04-29 09:27:40
【问题描述】:
Activity A -> Activity B -> Activity C -> Activity D 

假设我们有这个流程。从Activity D 我想回到Activity B,所以我的堆栈应该像这样关闭Activity D

Activity A -> Activity B 

我使用了startActivity(this, Activity B).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP),但它不会从后台堆栈恢复活动,它会再次创建它;

当我最初从Activity A 启动Activity B 时,我已经发送了一些捆绑包中的数据,这些数据现在丢失了;那么,我是否必须通过Activity C -> Activity D 发送该数据,以便当我从Activity D 打开它时将其发送回Activity B,或者我可以如何恢复Activity B

【问题讨论】:

  • 您可以使用 startActivityForResult 启动活动 D。对于那些你想在 D 关闭时关闭活动 C 的情况,将一些值传递给活动 C 的 onActivityResult 并从那里处理它。

标签: android android-activity kotlin back-stack application-lifecycle


【解决方案1】:

使用android:taskAffinity 可能是您的一个选择。

您可以将ActivityCActivityD 配置为具有相同的亲和力。当ActivityD 使用Activity#finishAffinity() 关闭时,ActivityDActivityC 已完成——ActivityB 将以其先前的意图恢复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-27
    相关资源
    最近更新 更多