Android 如何返回到上一个活动
我有三个活动A、B和C。当我按下活动A中的按钮时,它开始活动B,当我按下活动B中的按钮时,它开始活动C。到目前为止,没有问题 但当我按下活动C上的“后退”按钮时,它会将我返回到B。但发生的情况可以描述如下: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
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上调用()