当返回按钮关闭活动时返回意图结果
我使用startActivityForResult(intent, requestCode)
从原始Activity
开始新的Activity
。我想在用户按下后退按钮时将数据返回到原来的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
不onActivityResult()
RESULT_OK
) 。什么是正确的方法来做到这一点?谢谢!
覆盖
onActivityResult(int requestCode, int resultCode, Intent data)
方法,因为这个问题是仍然得到关注,我发布一个更正确的答案比两年前我接受的要好,谢谢MasterGaurav的tip。
@Override
public void onBackPressed() {
Intent intent = new Intent();
intent.putIntegerArrayListExtra(SELECTION_LIST, selected);
setResult(RESULT_OK, intent);
super.onBackPressed();
}
试试这个:希望当用户将数据恢复到原来的活动时
@Override
public void onBackPressed() {
// super.onBackPressed();
Intent intent = new Intent();
intent.putIntegerArrayListExtra(SELECTION_LIST, selected);
setResult(RESULT_OK, intent);
finish();
}
试试这个按下后退按钮,所以当返回到原来的Activity时。
@Override
public void onBackPressed() {
super.onBackPressed();
Intent intent = new Intent();
intent.putIntegerArrayListExtra(SELECTION_LIST, selected);
setResult(RESULT_OK, intent);
}
,如果你想getback从新近开放的活动导致刚刚从原来的活动
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
当然,我也想尝试其他答案。 ;) – WonderCsabo
@WonderCsabo谢谢。 :) –
@pratik:然后在父级活动,你会收到意图onResume()或onNewIntent()? – Behnam
开始一个新的活动从原来的活动与startActivityForResult(intent, requestCode)
:
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
onBackPressed();
return true;
}
return super.onKeyDown(keyCode, event);
}
其实我做了完全一样的事情,就像我在OP中写的一样。这不起作用,但Pratik的建议起作用。 – WonderCsabo
不幸的是,这不起作用,'requestCode'仍然不是'RESULT_OK'。 – WonderCsabo