De datos en onActivityResult es nulo
Estoy tratando de hacer una aplicación sencilla para Android
. Tengo dos Actividades ( A
y B
). En B
sólo quiero seleccionar una date
.
Comienzo A
, y lo hago:
- Tutorial / referencia para iniciar ACTION_EDIT con imagen y devolver imagen
- Cómo puedo agregar la imagen en el cuerpo del email
- Android, Detectar cuándo se lanzan otras aplicaciones
- Cómo terminar todas las actividades excepto la primera actividad?
- Obtener todos los clientes de Twitter de aplicaciones instaladas
Intent intent = new Intent(); intent.setClass(this, B.class); startActivityForResult(intent,1);
Entonces, en B
, hago:
Intent intent = getIntent(); setResult(RESULT_OK); intent.putExtra("Date",dateSelected); finish();
Y, en A
, tengo el siguiente método:
@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"); ..... }
Pero los data
y el bundle
son null
. Cuando depuro el código, veo que en la clase B
, la intent
tiene los Extras
, pero entonces, cuando llamo finish()
y vuelvo a la class A
, esta intent
no es accesible.
¿Como puedó resolver esté problema?
- Amplíe el tiempo de grabación de vídeo en Google Glass
- Falta una llamada para cancelar el registro del receptor HapticFeedbackBroadcastReceiver que nunca registré
- ¿Cómo puedo pasar URI con intención explícita?
- ¿Cómo recibo una URL de "Compartir" del navegador?
- Icono de la aplicación Launcher desaparece de la pantalla
- Cómo utilizar la intención de elegir el navegador de archivos para seleccionar el archivo
- Cómo pasar Extra a BroadcastReceiver, al iniciar ACTION_CALL
- La imagen adjunta de Android al correo electrónico no funciona
prueba esto:
Entonces, en B, hago:
Intent intent = getIntent(); intent.putExtra("Date",dateSelected); setResult(RESULT_OK, intent); finish();
Y, en 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"); } }
En A
método onActivityResult
if(null!=data){ Bundle bundle = data.getExtras(); String mydate = bundle.getString("Date"); }
Y en B
Intent returnIntent = new Intent(); returnIntent.putExtra("Date",dateSelected); setResult(RESULT_OK,returnIntent); finish();
Sé que esto se responde, pero sólo para dar más explicación sobre el error, que estaba utilizando getIntent()
lugar del elemento de data
recibidos en la devolución de llamada.
getIntent()
devuelve el Propósito que se utilizó originalmente para abrir la Actividad A (tal vez al abrir la aplicación o desde otra actividad) y los data
son la intención que la Actividad B devuelve como parámetros de respuesta.
Además, utilizaba getIntent()
en la Actividad B en lugar de crear un nuevo Propósito que se devolvería a la Actividad A.
Intent returnIntent = new Intent();
Finalmente, la intención creada debe agregarse en setResult
setResult(RESULT_OK,returnIntent);
- Android AlertDialog Mueva PositiveButton a la derecha y NegativeButton a la izquierda
- Programmatic haga clic en Android WebView