启动活动在堆栈上添加另一个活动

时间:2013-11-15 14:10:26

标签: android android-intent android-activity

以下是我的活动场景:

A1 - > A2 - > (A3) - > A4

我目前在A2,我想从A2直接转到A4,但如果用户按下A4中的后退按钮,请转到A3。如果用户按下A3中的后退按钮,则转到A2,如果用户按下A2中的后退按钮,则转到A1。哪一种是实现这一目标的最佳途径?

到目前为止,我尝试过三种不同的选择:

  1. 使用TaskStackBuilder:无法完全达到我想要的效果,因为我创建了一堆新的活动,所以重新创建了A1和A2(我宁愿不重新创建)。

  2. 从A2连续调用startActivity(A3)和startActivity(A4)。

  3. 从A2调用startActivity(A3),设置Intent Extra。在A3的onCreate()方法中,检查Intent Extra的值,并根据其值自动启动A4。

  4. 您认为哪一种是实现我想要的最佳方法?

2 个答案:

答案 0 :(得分:1)

我不确定这是一个很好的用户体验。如果他按下A4中的BACK按钮,为什么用户希望看到A3?

然而,如果这是你想要做的,我肯定会选择#3。 A2应该开始A3并传递一个额外的告诉A3立即开始A4。从编码角度来看,这种选择是最直接的,如果他们必须维护它,那么其他人很容易就会遵循。

答案 1 :(得分:0)

从A2创建A4;

拦截A4上的后退事件;

覆盖它并创建A3整理A4。

我发现这是一个很好的解决方案,因为使用A3你不会真的回来。系统会很高兴:)

A4上的

public void onBackPressed() {
    finish();

    Intent intent = new Intent(this, A3.class);    
    startActivity(intent);
}