Данные в 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);