data in onActivityResult is null

2020-01-29 07:50发布

I am trying do a simple application for Android. I have two Activities (A and B). In B I only want select a date.

I start A, and do:

 Intent intent = new Intent();
 intent.setClass(this, B.class);
 startActivityForResult(intent,1);

Then, in B, I do:

 Intent intent = getIntent();
 setResult(RESULT_OK);
 intent.putExtra("Date",dateSelected);
 finish();

And, in A, i have the next method:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     super.onActivityResult(requestCode, resultCode, data);
     if(resultCode==RESULT_OK && requestCode==1){
        Bundle bundle = getIntent().getExtras();
        String aux = bundle.getString("nuevo");
        .....
    }

But data, and bundle, are null. When i debug the code, i see that in class B, intent has the Extras, but then, when i call finish() and return to class A, this intent is not reachable.

How can i solve this problem?

3条回答
Emotional °昔
2楼-- · 2020-01-29 08:12

in A onActivityResult method

   if(null!=data){

    Bundle bundle = data.getExtras();
    String mydate = bundle.getString("Date");

   }

and in B

Intent returnIntent = new Intent();
returnIntent.putExtra("Date",dateSelected);
setResult(RESULT_OK,returnIntent);      
finish();
查看更多
Rolldiameter
3楼-- · 2020-01-29 08:15

try this:

Then, in B, I do:

Intent intent = getIntent();
intent.putExtra("Date",dateSelected);
setResult(RESULT_OK, intent);
finish();

And, in A:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(resultCode==RESULT_OK && requestCode==1){
Bundle MBuddle = data.getExtras();
String MMessage = MBuddle .getString("Date");
}
}
查看更多
手持菜刀,她持情操
4楼-- · 2020-01-29 08:23

I know this is answered, but just to give more explanation on the error, you were using getIntent() instead of the data element received on the callback.

getIntent() returns the Intent that was originally used to open Activity A (maybe when you opened the app or from another activity), and data is the intent that Activity B returned as response parameters.

Also, you were using getIntent() in Activity B instead of creating a new Intent that would be returned to Activity A.

Intent returnIntent = new Intent();

Finally, the created intent must be added in setResult

setResult(RESULT_OK,returnIntent);  
查看更多
登录 后发表回答