2016-09-24 30 views
1

onActivityResult()、getIntent()。getSerializableExtra()がnullです。しかし、putSerializable()の値をチェックすると、nullではなく、タグは同じです。しかし、iputTextActivityでは、私は有効な値を受け取ります。どうして?onActivityResult getIntent()。getSerializableExtraがnullです。

クラス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(); 
    } 
}); 

答えて

3

ではなくgetIntent()を呼び出すのonActivityResult()に渡されたIntentを使用してみてください。 ActivitygetIntent()と呼ぶと、それはActivityの開始に使用されるIntentを返します。この場合、getIntent()を呼び出すと、daygramActivity Activityの開始に使用されたIntentへの参照が返されます。 setResult()を呼び出したときに使用したIntentは返されません。代わりにsetResult()に電話をしたときに使用されるIntentは、IntentパラメータとしてonActivityResult()に表示されます。

だから、このonActivityResult()変化:

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

これまで:

Message msg = (Message) data.getSerializableExtra(iputTextActivity.IPUT_TEXT_RETURN_CONTENT); 
関連する問題