android - 在 onActivityResult 中 getIntent().getSerializableExtra 为 null

标签 android android-intent

在onActivityResult()中,getIntent().getSerializableExtra()为null。但是当我检查 putSerializable() 值时,它不为空,标签是相同的。但在 iputTextActivity 中,我收到了有效值。为什么?

类daygramActivity:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(resultCode!= Activity.RESULT_OK)  
        return;

    if(requestCode == 1){   
        if(data==null){
            return;
        }

        Message msg = (Message) getIntent().getSerializableExtra(iputTextActivity.IPUT_TEXT_RETURN_CONTENT); 
        if(msg == null)  //I receive null
            return;

        updateData(1); 
    }
}

类 iputTextActivity:

final Message msg = (Message) getIntent().getSerializableExtra(daygramActivity.SER_KEY);  //I receive valid                   //value

mDoneButton.setOnClickListener(new View.OnClickListener(){
    @Override
    public void onClick(View v){
        EditText edT = (EditText) findViewById(R.id.editText);
        String input = edT.getText().toString();

        Intent data=new Intent(); 

        Bundle mBundle = new Bundle();
        msg.setContent(input);
        mBundle.putSerializable(IPUT_TEXT_RETURN_CONTENT,msg);
        data.putExtras(mBundle);
        setResult(Activity.RESULT_OK, data);
        finish();
    }
});

最佳答案

尝试使用 Intent传递给 onActivityResult()而不是调用 getIntent() .当您调用 getIntent()Activity它返回 Intent用来启动Activity .在这种情况下,通过调用 getIntent()它将返回对 Intent 的引用用于启动您的 daygramActivity Activity .它不会返回 Intent你打电话时用过setResult() .相反,Intent当您调用 setResult() 时使用以 Intent 的形式提供给您onActivityResult() 中的参数.

所以在onActivityResult()改变这个:

Message msg = (Message) getIntent().getSerializableExtra(iputTextActivity.IPUT_TEXT_RETURN_CONTENT);

为此:

Message msg = (Message) data.getSerializableExtra(iputTextActivity.IPUT_TEXT_RETURN_CONTENT);

关于android - 在 onActivityResult 中 getIntent().getSerializableExtra 为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39671527/

相关文章:

java - ListView 索引和 SearchView

android - 错误 : undefined reference in JNI function After upgrading NDK and Cmake for Android Studio

android - 尽管匹配,PackageManager queryIntentActivities 返回空列表

android - 动态注册时未调用 BroadcastReceiver onReceive()

c# - Unity Android Intent

android viewPager 实现

Android BluetoothSocket OutputStream 无限写入 block

android - 如何使用 Hilt 在 Room TypeConvertors 中注入(inject) Moshi/Gson?

java - 使用 Android 触摸屏捕捉游戏(如《愤怒的小鸟》)的 Action 或击键

android - 用于 TalkBack 的 BroadcastReceiver