Android: setResult no funciona
Escenario: Tengo MainActivity.java
, OtherPageForFragments.java
y un fragmento que está en OtherPageForFragments.java
En MainActivity.java
, he escrito el siguiente código para iniciar una actividad y obtener el resultado en
- Cómo usar correctamente Dagger2 con los nuevos componentes de arquitectura de Android
- Compartir fotos con Android con FileProvider
- ClassNotFoundException: twitter4j.conf.PropertyConfigurationFactory: Android
- Cambiar la fuente del título de la aplicación en android
- Varias versiones de la misma biblioteca
OnActivityResult (int requestCode, int resultCode, datos de intención)
es
startActivityForResult(new Intent(this, OtherPageForFragments.class),REQUEST_CODE_MAP);
En el onDestroy()
de la clase de fragmento, he escrito esto:
public void onDestroyView() { // TODO Auto-generated method stub super.onDestroyView(); mlocManager.removeUpdates(this); Intent intent = new Intent(); intent.putExtra("Latitude", passLatLng.latitude); intent.putExtra("Longitude", passLatLng.longitude); getActivity().setResult(Activity.RESULT_OK, intent); getActivity().finish(); }
Ahora, quiero mi resultado en la clase MainActivity
. Por lo tanto, he escrito el siguiente código en el método onActivityResult
:
if (resultCode == Activity.RESULT_OK && requestCode == REQUEST_CODE_MAP) { tost("2"); double lat=data.getExtras().getDouble("Latitude"); double lng=data.getExtras().getDouble("Longitude"); tost(lat + " -- " + lng); }
El problema: el resultCode
que devuelve no es Activity.RESULT_OK
y el Intent
que recibo es null
.
¿Qué hacer? Gracias
- View.OnClickListener () una función o interfaz
- Encuentra la IP del servidor en la red local con el puerto conocido en Java / Android
- ¿Cómo obtener el tamaño en memoria de un objeto en Android, o puntos de referencia de rendimiento?
- ¿Cómo desactivar y activar el desplazamiento en Android ScrollView?
- Implementar la aplicación de Android. Falta la tarea 'installReleaseDebug' para gradle
- Cómo detener la instalación de APK de múltiples sectores en Android Studio 2.3
- IllegalStateException en MediaPlayer
- Cómo utilizar Google Api de traducción en mi aplicación de Android
getActivity().setResult(Activity.RESULT_OK, intent); getActivity().finish();
Este código no debe estar en onDestroy. OnDestroy ocurre después de que la actividad ya está terminada, y se llamó onActivityResult.
Este código necesita en el código que cierra la actividad / fragmento, como en la tecla de regreso presionado, o un botón de cierre onClick
Tal vez usted necesita aclarar los modos de lanzamiento para ambas actividades. Normalmente deben ser "estándar", si hay "singleTop" … atributos en su archivo de manifiesto de actividad. Usted necesita prestar más atención.
Prueba esto:
Intent data = new Intent(); intent.putExtra("Latitude", passLatLng.latitude); intent.putExtra("Longitude", passLatLng.longitude); if (getParent() == null) { setResult(Activity.RESULT_OK, data); } else { getParent().setResult(Activity.RESULT_OK, data); } getActivity().finish();
- SetMicrophoneMute (boolean) no funciona en algunos dispositivos
- ¿Es posible inyectar simulacros para realizar pruebas con AndroidAnnotations?