簡體   English   中英

onActivityResult()Intent數據始終為null

[英]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()));

即你應該在onPauseonStoponDestroyfinish ...等之前調用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM