我有以下活动堆栈:A-> B-> C-> D
在活动D中,将启动新的活动E.是否可以将活动堆栈更改为A-> E(因此,如果用户按下它们将转到活动A)?
附加信息:我不想要D,E取决于A.所以覆盖E onBackPressed直接启动A或从D用CLEAR_TOP标志启动A然后转到E不是一个选择。
答案 0 :(得分:1)
根据您的要求,可以使用startactivityforresult和onActivityResult让我解释一下
1.先打电话给A到B. 2.来自B调用startactivityforresult C,也在B中添加onActivityResult来处理结果 3.从C调用D作为步骤2。 4.现在当你从D调用E时,只需完成D和setResult(RESULT_OK) 6.现在活动C onActivityResult被调用那里检查结果ok和完成活动和setResult(RESULT_OK)相同的B
这里你得到堆栈A到E。
了解更多信息http://developer.android.com/training/basics/intents/result.html 如果有任何问题让我知道
答案 1 :(得分:0)
您可以通过覆盖onBackPressed
方法并使用Tasks and Back Stack来管理堆叠和后退按钮。
所以在反向的方法中:
@Override
public void onBackPressed() {
startActivity(new Intent(this, YourChosenClass.class));
super.onBackPressed();
}
任务是一个有凝聚力的单位,可以转移到"背景"当用户开始新任务或通过主页按钮进入主屏幕时。在后台运行时,任务中的所有活动都会停止,但任务的后台堆栈仍然完好无损 - 当另一个任务发生时,任务完全失去焦点,如图2所示。然后任务可以返回到& #34;前景"所以用户可以从中断的地方继续。例如,假设当前任务(任务A)在其堆栈中有三个活动 - 在当前活动下有两个活动。
与任务相关联的活动将在后台堆栈中提供。