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

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

я начинаюA, и делать:

<code> Intent intent = new Intent();
 intent.setClass(this, B.class);
 startActivityForResult(intent,1);
</code>

Затем вB, Я делаю:

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

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

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

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

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

 Siddharth Lele10 мая 2012 г., 13:47
Существует ли причина, по которой имя ключа в действии B отличается от имени ключа в методе onActivityResult () в действии A?

Ответы на вопрос(3)

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();
 10 мая 2012 г., 17:02
+1 @SamirMangroliya это зависит от Нобелиско, который ответ принимает или нет
 10 мая 2012 г., 17:04
У меня нет никаких проблем для этого, но я иногда принимаю и не принимаю, а затем принимаю, а затем принимаю !!! LoLz ...
 Nobelisco18 мая 2012 г., 15:14
извиняюсь. я изменил свой выбор, потому что я думал, что другой ответ был больше ясности. Это правда, что ваш ответ был более ранним, но я не видел его в тот момент. Я пытался выбрать оба ответа, но это невозможно. Спасибо за помощь, и извините, если я сделал плохо.
 Nobelisco10 мая 2012 г., 15:54
Спасибо!!! это была проблема!

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

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

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

Intent returnIntent = new Intent();

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

setResult(RESULT_OK,returnIntent);  
Решение Вопроса

Затем в B я делаю:

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

А в А:

@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");
}
}
 08 авг. 2014 г., 06:45
setResult (RESULT_OK, намерение); Это помогло мне
 Nobelisco10 мая 2012 г., 15:52
Спасибо!!! Мне нужно было изменить setResult (RESULT_OK, намерение). это легко, но я новичок в программировании для Android.
 10 мая 2012 г., 17:01
@Nobelisco: все нормально, всегда добро пожаловать, друг. Если у вас есть другие проблемы, просто прокомментируйте
 15 окт. 2018 г., 05:06
Я делаю точно так, как говорит ваш ответ, даже если я получаю data.getData () как ноль ...

Ваш ответ на вопрос