我使用Activity
从原始Activity
开始新的startActivityForResult(intent, requestCode)
。我想在用户按下后退按钮时将数据返回到原始Activity
,因此返回原始Activity
时。我尝试了两种方法:
覆盖onBackPressed()
:
@Override
public void onBackPressed() {
super.onBackPressed();
Intent intent = new Intent();
intent.putIntegerArrayListExtra(SELECTION_LIST, selected);
setResult(RESULT_OK, intent);
}
覆盖onPause()
:
@Override
protected void onPause() {
super.onPause();
Intent intent = new Intent();
intent.putIntegerArrayListExtra(SELECTION_LIST, selected);
setResult(RESULT_OK, intent);
}
很遗憾,他们都没有工作(resultCode
在RESULT_OK
中不是onActivityResult()
。这样做的正确方法是什么?谢谢!
答案 0 :(得分:23)
试试这个:
@Override
public void onBackPressed() {
// super.onBackPressed();
Intent intent = new Intent();
intent.putIntegerArrayListExtra(SELECTION_LIST, selected);
setResult(RESULT_OK, intent);
finish();
}
答案 1 :(得分:7)
由于这个问题仍然引起关注,我发布的答案比我两年前接受的答案更正确,感谢MasterGaurav的tip。
@Override
public void onBackPressed() {
Intent intent = new Intent();
intent.putIntegerArrayListExtra(SELECTION_LIST, selected);
setResult(RESULT_OK, intent);
super.onBackPressed();
}
答案 2 :(得分:0)
试试这个:
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
onBackPressed();
return true;
}
return super.onKeyDown(keyCode, event);
}
答案 3 :(得分:0)
使用startActivityForResult(intent, requestCode)
当用户按下后退按钮时想要将数据返回到原始Activity,所以当返回原始Activity时。
@Override
public void onBackPressed() {
super.onBackPressed();
Intent intent = new Intent();
intent.putIntegerArrayListExtra(SELECTION_LIST, selected);
setResult(RESULT_OK, intent);
}
如果你想从新开放的活动中取回结果只是覆盖
onActivityResult(int requestCode, int resultCode, Intent data)
来自原始活动的方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
答案 4 :(得分:0)
尝试一下:
@Override
public void onBackPressed() {
super.onBackPressed();
Intent intent = new Intent();
intent.putIntegerArrayListExtra(SELECTION_LIST, selected);
setResult(RESULT_OK, intent);
finish();
}