【问题标题】:I can not finish the Activity我无法完成活动
【发布时间】:2019-11-11 06:34:59
【问题描述】:

我的问题是……我有 3 个活动:

(活动A)、(活动B)和(活动C)

从 ActivityA 到 ActivityB 我使用以下代码:

val intent = Intent(this, ActivityB::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)

intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY)
startActivity(intent)
finish()

从 ActivityB 到 ActivityC 我也用这个代码:

val intent = Intent(this, ActivityC::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)

intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY)
startActivity(intent)
finish()

但如果我给 onBackPressed 或转到任何其他应用程序并返回我的应用程序,而不是返回到 ActivityC,它会转到 ActivityA。

【问题讨论】:

标签: android android-intent android-activity kotlin


【解决方案1】:

改用这个

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK)
startActivity(intent)
finish()

【讨论】:

    【解决方案2】:

    您需要从Intent 中删除Intent.FLAG_ACTIVITY_NO_HISTORY 以启动Activity C,因为该标志会阻止将新活动添加到后台堆栈并在导航离开时完成活动。这意味着您的应用程序将从它的启动器活动开始,我假设它是Activity A。你可以阅读更多关于这个flag here in the documentation的信息。

    【讨论】:

      【解决方案3】:

      从活动 A 到活动 B 这样做 -

      val intent = Intent(this, ActivityB::class.java)
      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
      startActivity(intent)
      finish()
      

      从活动 B 到活动 C 这样做 -

      val intent = Intent(this, ActivityC::class.java)
      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
      startActivity(intent)
      finish()
      

      【讨论】:

        【解决方案4】:

        您必须删除 intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY)。

        它确实清除了当前活动的历史记录。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-01-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多