我想使用activity
为result
开始新的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);
}
我可以使用解释。
答案 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()的行。