我有四个活动a,b,c,d。活动a是主要活动,然后调用b,c和d,然后进行一些计算。我知道我可以通过这些活动中的android:noHistory="true"
属性阻止活动在我的应用程序中累积。但问题是如果我在活动c,当我按下后退按钮我想去b,但如果d完成我想要删除b和c只显示一个。有没有办法实现这个目标?
答案 0 :(得分:1)
将此代码放入您的每项活动中,每次都稍微更改一下。这样你就可以覆盖后退按钮的正常功能
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK
&& event.getRepeatCount() == 0) {
//start the desired activity
}
return super.onKeyDown(keyCode, event);
}
此外,如果您只支持Android 2.0+,那么您可以使用此
@Override
public void onBackPressed() {
// start your desired activity here
return;
}
只需将其中任何一项放入您的每项活动中,然后开始正确的活动
要关闭一项特定活动,请查看此页面 - How to clear specific activity from the stack history?
答案 1 :(得分:0)
是的,可以通过确保在每个startActivity函数之后使用finish()函数来实现。除了要在最后显示的活动之外。
所以...这就是它的样子
A中的代码:
startActivity(Intent to start activity B);
B中的代码:
startActivity(Intent to start activity C);
Finish();
C代码:
startActivity(Intent to start activity D);
Finish();
这将确保每当活动D完成时,活动C也将因完成而完成。由于此C也已完成,活动B中的Finish()将关闭B.由于活动A中没有Finish(),该活动将显示在屏幕上。
如果你想在D完成后才进入活动A,你必须使用startActivityForResult并处理结果并使用IF在B&amp ;;中有条件地执行Finish语句。 C.