在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();
    }
});

最佳答案

尝试使用传递给IntentonActivityResult()而不是调用getIntent()。当您在getIntent()中调用Activity时,它将返回用于启动该IntentActivity。在这种情况下,通过调用getIntent()它将返回对用于启动daygramActivity IntentActivity的引用。它不会返回调用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/

10-11 05:18