有人可以告诉我为什么Intent data
总是空的吗?
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == UPDATE_PROFILE_REQUEST_CODE) {
if (data != null) {
User user = (User) data.getExtras().getSerializable(USER_DATA_EXTRA);
if (user != null) {
notifyNeedUpdate(user);
}
} else {
Log.e("Dev", "data is null");
}
}
}
}
这就是我设置结果的方式:
setResult(RESULT_OK, getIntent().putExtra(ProfileActivity.USER_DATA_EXTRA, constructUser()));
constructUser()
只是创建了我需要的对象。
我总是得到Log.e("Dev", "data is null");
。
答案 0 :(得分:34)
在致电
之前,请确保您的第二项活动未完成setResult(RESULT_OK, getIntent().putExtra(ProfileActivity.USER_DATA_EXTRA, constructUser()));
即。您应该在setResult
,onPause
,onStop
,onDestroy
...之前致电finish
等等
答案 1 :(得分:22)
虽然可能不是您的问题,但在此处发布可能不是您的问题
确保您的活动返回传回这样的内容:
Intent returnIntent = new
returnIntent.putExtra("result", app);
returnIntent.putExtra("element", element);
if (app.getStatus() == 2){
returnIntent.putExtra("update", true);
// Tell the parent that everything went okay
setResult(Activity.RESULT_OK, returnIntent);
Log.i(TAG, "Returning, Result Success");
} else {
// Tell parent that nothing changed
setResult(RESULT_CANCELED, returnIntent);
Log.i(TAG, "Returning, Nothing changed");
}
finish();
我花了很长时间来回复null意图。对我来说这是因为在onBackPressed中我在上面的代码之前调用了super.onBackPressed()。当我把它放在一切都很好的时候。如果过早调用onStop / onDestroy,则会阻止传递意图的机会。这可能是您的问题
答案 2 :(得分:-2)
完成后,您必须将来自被叫Activity
的一些数据返回到调用Activity
。