我有三个活动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();
}
答案 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();
}