我有四个活动a,b,c,d。活动 a 是主要活动,然后调用 b、c 和 d,然后进行一些计算。android:noHistory="true"
我知道我可以通过这些 activites 中的属性阻止活动在我的应用程序中建立。但问题是,如果我在活动 c 中,当我按下后退按钮时,我想转到 b,但如果 d 完成,我希望删除 b 和 c,只显示 a。有什么办法可以做到这一点?
问问题
896 次
2 回答
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;
}
只需将其中任何一个放入您的每个活动中,然后开始正确的活动
要关闭一项特定活动,请查看此页面 -如何从堆栈历史记录中清除特定活动?
于 2012-11-10T08:31:50.127 回答
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 完成后才来 Activity A,则必须使用 startActivityForResult 并处理结果,并使用 IF 有条件地执行 B & C 中的 Finish 语句。
于 2012-11-10T10:28:04.043 回答