我无法完成活动

时间:2019-06-29 23:36:45

标签: android android-intent android-activity kotlin

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

(ActivityA),(ActivityB)和(ActivityC)

从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。

4 个答案:

答案 0 :(得分:1)

改为使用此

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

答案 1 :(得分:0)

您需要从Intent.FLAG_ACTIVITY_NO_HISTORY中删除Intent以启动Activity C,因为该标志阻止将新活动添加到后台堆栈,并在该活动结束时完成该活动离开。这意味着您的应用将从其启动器活动开始,我假设它是Activity A。您可以了解有关此flag here in the documentation的更多信息。

答案 2 :(得分:0)

从活动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()

答案 3 :(得分:0)

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

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