我的问题是...我有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。
答案 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)。
它确实清除了当前活动的历史记录。