Android:具有BACK按钮功能的startActivityForResult()

时间:2011-08-03 13:57:09

标签: java android android-activity activity-finish

我想使用activityresult开始新的startActvityForResult(),但我希望back按钮在新活动中正常工作。

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

我试过这样的事情:

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

在新的Activity中,但它没有用。按下后退按钮时仍然没有任何反应。

有解决方法吗?

编辑:我当然可以加载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);
}

我可以使用解释。

3 个答案:

答案 0 :(得分:14)

你可以尝试

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

答案 1 :(得分:7)

您根本不必覆盖“后退”按钮行为。默认情况下,如果用户按下后退按钮,结果将为Activity.RESULT_CANCELED

答案 2 :(得分:0)

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