[英]OnActivityResult() Intent data is always null with no reason
[英]onActivityResult() Intent data is always null
有人可以告訴我為什么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");
。
在致電之前,請確保您的第二項活動尚未完成
setResult(RESULT_OK, getIntent().putExtra(ProfileActivity.USER_DATA_EXTRA, constructUser()));
即你應該在onPause
, onStop
, onDestroy
, finish
...等之前調用setResult
盡管可能不是您的問題,但在此處作為可能的答案發布
確保您的活動返回傳回這樣的內容:
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();
我花了很長時間來回歸無效的意圖。 對我來說這是因為在onBackPressed中我在上面的代碼之前調用了super.onBackPressed()。 當我把它放在一切都很好的時候。 如果過早調用onStop / onDestroy,則會阻止傳遞意圖的機會。 這可能是你的問題
您必須在完成它時將一些數據從被調用的Activity
返回到調用Activity
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.