12

我想用 , 开始一个新activityresultstartActvityForResult()但我想让back按钮在新活动中正常工作。

目前,当我调用一个新Activity的结果时,当我按下新活动中的后退按钮时没有任何反应。

我试过这样的事情:

@Override
public void onBackPressed() {
    setResult(0);
    super.onBackPressed();
    finish();
}

在新的活动中,但它没有工作。按下后退按钮时仍然没有任何反应。

有没有解决的办法?

Activity编辑:我当然可以在(我可以吗?)中加载最后一个onBackPressed(),但这似乎是一个相当糟糕的黑客。

Alex Ady 的回答解决了我的问题,但我仍然不明白为什么onBackPressed()不起作用。现在的工作代码是这样的:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK)) {
        setResult(1);
        finish();
    }
    return super.onKeyDown(keyCode, event);
}

我可以用一个解释。

4

3 回答 3

14

你可以试试

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK)) {
         finish();
    }
    return super.onKeyDown(keyCode, event);
}
于 2011-08-03T14:02:54.863 回答
8

您根本不必重写后退按钮的行为。默认情况下,如果用户按下后退按钮,结果将为Activity.RESULT_CANCELED.

于 2011-08-03T14:07:34.520 回答
0

尝试删除包含 finish() 的行。

于 2011-08-03T14:01:13.520 回答