Данные в onActivityResult равны нулю

Я пытаюсь сделать простое приложение для Android. У меня есть две операции (A и B). В B мне нужно только выбрать date.

Я начинаю A и делаю:

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

Тогда, в B, я делаю:

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

И, в A, у меня есть следующий метод:

@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");
        .....
    }

Но data и bundle, null. Когда я отлаживаю код, я вижу, что в классе B, intent имеет Extras, но затем, когда я вызываю finish() и возвращаюсь к class A, этот intent недоступен.

Как я могу решить эту проблему?

Ответ 1

попробуйте следующее:

Тогда, в B, я:

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

И, в 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");
}
}

Ответ 2

в A метод onActivityResult

   if(null!=data){

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

   }

и в B

Intent returnIntent = new Intent();
returnIntent.putExtra("Date",dateSelected);
setResult(RESULT_OK,returnIntent);      
finish();

Ответ 3

Я знаю, что это ответ, но для того, чтобы дать больше объяснений об ошибке, вы использовали getIntent() вместо элемента data, полученного при обратном вызове.

getIntent() возвращает намерение, которое изначально использовалось для открытия Activity A (возможно, когда вы открыли приложение или из другого действия), а data - это намерение Активность B возвращается как параметры ответа.

Кроме того, вы использовали getIntent() в Activity B вместо создания нового намерения, которое будет возвращено в Activity A.

Intent returnIntent = new Intent();

Наконец, созданное намерение должно быть добавлено в setResult

setResult(RESULT_OK,returnIntent);