如何在我的案例

时间:2015-12-15 13:48:47

标签: android android-activity

我有以下活动堆栈:A-> B-> C-> D

在活动D中,将启动新的活动E.是否可以将活动堆栈更改为A-> E(因此,如果用户按下它们将转到活动A)?

附加信息:我不想要D,E取决于A.所以覆盖E onBackPressed直接启动A或从D用CLEAR_TOP标志启动A然后转到E不是一个选择。

2 个答案:

答案 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)在其堆栈中有三个活动 - 在当前活动下有两个活动。

与任务相关联的活动将在后台堆栈中提供。