0

我有四个活动a,b,c,d。活动 a 是主要活动,然后调用 b、c 和 d,然后进行一些计算。android:noHistory="true"我知道我可以通过这些 activites 中的属性阻止活动在我的应用程序中建立。但问题是,如果我在活动 c 中,当我按下后退按钮时,我想转到 b,但如果 d 完成,我希望删除 b 和 c,只显示 a。有什么办法可以做到这一点?

4

2 回答 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 回答