在onActivityResult()中,getIntent()。getSerializableExtra()为null。但是,当我检查putSerializable()值时,它不为null,并且标记相同。但是在iputTextActivity中,我收到了有效值。为什么?
class 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()
它将返回对用于启动daygramActivity Intent
的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/