Android 如何返回到上一个活动

Android 如何返回到上一个活动,android,android-intent,back-button,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

我有三个活动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上的后退按钮,它会将我返回到同一活动B 5次,第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();
}

使用属性将父活动包括在清单中 android:parentActivityName=“com.example.myfirstapp

这里有一些关于向上导航的更多信息

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

每次在
onBackPressed()
方法中,你开始一个新活动,android在backbackbackback模型上工作

让我解释一下

Activity-A  Activity-B  Activity-C
因此,每次单击Backpressed时,堆栈都会显示这种行为

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...]
所以剩下的堆栈将是

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

只需调用finish();而不是new Intent。

您正在onBackPressed中创建活动的新实例。只需从活动中删除Intent语句即可

//在活动C中

@Override
public void onBackPressed() 
 {
 super.onBackPressed();
 finish();
}
//在活动B中

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

如果查询,请添加注释而不是答案。在此处发布您的代码可能与发布的@quicklearner代码重复请查看您的按钮单击代码如何?发布it@user2121在backpress上启动新的意图不是一个好主意。请改用
startActivityForResult()
,它将在activityresult上调用
()