在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/