我按下BACK按钮后尝试setResult.我打电话给onDestroy
Intent data = new Intent();
setResult(RESULT_OK, data)
Run Code Online (Sandbox Code Playgroud)
但是当涉及到
onActivityResult(int requestCode, int resultCode, Intent data)
Run Code Online (Sandbox Code Playgroud)
resultCode为0(RESULT_CANCELED),数据为"null".
那么,如何通过BACK按钮终止活动传递结果?
小智 152
你需要覆盖onBackPressed()方法并在调用超类之前设置结果,即
@Override
public void onBackPressed() {
Bundle bundle = new Bundle();
bundle.putString(FIELD_A, mA.getText().toString());
Intent mIntent = new Intent();
mIntent.putExtras(bundle);
setResult(RESULT_OK, mIntent);
super.onBackPressed();
}
Run Code Online (Sandbox Code Playgroud)
JBM*_*JBM 66
Activity必须在 finish()调用之前设置结果.单击BACK实际上会调用finish()您的activity,因此您可以使用以下代码段:
@Override
public void finish() {
Intent data = new Intent();
setResult(RESULT_OK, data);
super.finish();
}
Run Code Online (Sandbox Code Playgroud)
如果你打电话NavUtils.navigateUpFromSameTask();的onOptionsItemSelected(),finish()是所谓的,但你会得到错误的result code.所以,你必须调用finish()没有navigateUpFromSameTask在onOptionsItemSelected().
onActivityResult中的requestCode错误
Khu*_*zad 18
如果你想RESULT_CODE在onBackPressed事件中设置一些自定义,那么你需要先设置result然后调用它super.onBackPressed(),你将RESULT_CODE在调用者活动的onActivityResult方法中收到相同的
@Override
public void onBackPressed()
{
setResult(SOME_INTEGER);
super.onBackPressed();
}
Run Code Online (Sandbox Code Playgroud)
我重构了我的代码.起初,我准备了一些数据,并将其设置为activity result在onDestroy(这不工作).现在我activity每次更新要返回的数据时都会设置数据,并且没有任何内容onDestroy.
| 归档时间: |
|
| 查看次数: |
55332 次 |
| 最近记录: |