如何返回上一个活动

时间:2016-12-28 07:03:34

标签: android android-intent back-button

我有三个活动A,B和C.当我按下活动A中的按钮时,它启动活动B,当我按下活动B中的按钮时,它启动活动C.到此处没有问题。

但是当我按下活动C上的后退按钮时,它应该让我回到B.但是会发生什么可以描述如下:

1st time B starts C, then C goes back to B
2nd time B starts C, then C goes back to B
3rd time B starts C, then C goes back to B
4th time B starts C, then C goes back to B

等等,

现在,当我按下B上的后退按钮时,它应该导航回到A,但是当我按下B上的后退按钮时,它会一次又一次地将我返回到B,就像B开始一样C.如果活动B开始C 5次,那么何时开始 按下B上的后退按钮,它返回我5次到相同的活动B,并在第6次返回给我A

请让我知道为什么会发生这种情况以及如何解决它

//in activity C
@Override
public void onBackPressed() {
    super.onBackPressed();

    new Intent(SchadenListeActivity.this, 
VersMoreDetailsModActivity.class);
    finish();
}

//in activity B
@Override
public void onBackPressed() {
    super.onBackPressed();

    new Intent(VersMoreDetailsModActivity.this,   
 VersicherungsListeActivity.class);
    finish();
}

4 个答案:

答案 0 :(得分:0)

在清单中包含具有该属性的父活动     机器人:parentActivityName =“com.example.myfirstapp

以下是有关向上导航的更多信息 http://developer.android.com/design/patterns/navigation.html

答案 1 :(得分:0)

当你离开A-> B-> C时,不要完成任何活动。删除onBackPressed()代码,无需处理。

答案 2 :(得分:0)

每次在onBackPressed()方法中你都会开始一个新的Activity并且android在Backstack模型上工作..

让我解释一下

Activity-A  Activity-B  Activity-C

因此,每次单击OnBackPressed时,堆栈都会显示此行为。

Stack [ Activity-A, Activity-B, Activity-C,(Backpressed)(POP Activity-C), Activity-B, Activity-C, (Backpressed)(POP - Activity-C), Activity - B, Activity - C, (BackPressed)(POP - Activity-C), Activity - B, Activity -C...]

所以Remaining Stack就像

Stack [ Activity-A, Activity-B, Activity-B, Activity - B, Activity - B, Activity -C...]

只需调用finish();不是新的意图。

答案 3 :(得分:0)

您正在onBackPressed中创建Activity的新实例。简单地说,从您的活动中删除intent语句。

//活动C

@Override
public void onBackPressed() 
 {
 super.onBackPressed();
 finish();
}

//活动B

@Override
public void onBackPressed() 
 {
 super.onBackPressed();
 finish();
}