OnActivityResult () llamado prematuramente
Comienzo la actividad (descendiente de PreferenceActivity) de mi actividad de trabajador como sigue:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 1458) loadInfo(); } void showSettingsDialog() { startActivityForResult(new Intent().setClass(this, MyConfigure.class), 1458); }
La clase MyConfigure NO tiene ninguna llamada a setResult (). De hecho, la clase MyConfigure no tiene ningún código excepto OnCreate donde carga las preferencias usando addPreferencesFromResource.
- Android Fragment onCreateView vs. onActivityCreated
- Android: problemas con una cadena de actividad multinivel
- ¿La mejor manera de agregar actividad a un proyecto de Android en Eclipse?
- Cómo navegar desde una pantalla a otra pantalla
- Vista previa de Android M: la actividad se recrea después de la concesión del permiso
Ahora onActivityResult se llama con requestCode de 1458 prematuramente, justo después de ejecutar la actividad MyConfigure. Probado en los emuladores 1.6 y 2.1, así como en el dispositivo 2.1. ¿Hay una llamada a setResult () enterrada en alguna parte de PreferenceActivity? ¿O de qué otra manera se puede explicar esta llamada prematura?
- La aplicación de Android se bloquea al iniciar: SQLite NullPointerException en ContactsFragment
- Cantidad máxima de actividades en la aplicación? Androide
- Android precarga una url en WebView mientras se muestra la pantalla de bienvenida
- Finish () y el ciclo de vida de la actividad
- ¿Es posible utilizar un MapView sin tener que extender MapActivity?
- ¿Cómo cerrar la actividad del navegador al volver a la actividad de llamada?
- Instancia de apertura de la actividad
- Finaliza la actividad cuando se devuelve una respuesta del servidor, pero espera que termine la animación
Esto se arregla cambiando el modo de singleTop
a singleTop
:
<activity android:name=".MainActivity" android:launchMode="singleTop">
Hay un error / función (?) En Android, que informa inmediatamente el resultado (que aún no se ha definido) para la actividad, declarada como singleTask (a pesar de que la actividad continúa ejecutándose). Si cambiamos launchMode de la actividad principal de singleTask a singleTop, todo funcionará como se espera – el resultado se reporta sólo después de que la actividad haya terminado. Si bien este comportamiento tiene cierta explicación (sólo puede existir una actividad singleTask y puede haber varios servidores para ello), esto sigue siendo una restricción no lógica para mí.
He resuelto mi problema después de eliminar intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Antes de llamar a fragment.startActivityForResult(intent, 0);
.
Acabo de eliminar todos los de mi costumbre "android: launchMode" de mi actividad y todo funcionó como un encanto. No es una buena idea cambiar esto cuando usted no sabe EXACTAMENTE lo que Android está entendiendo … Android es un poco complicado de esta manera.
Esto me sucedió cuando la intención tenía el indicador Intent.FLAG_RECEIVER_FOREGROUND
establecido.
(Sí, esa bandera no está relacionada con la actividad, pero la tenía en todas mis intenciones como parte de una solución de escopeta a un problema diferente ).
De nuevo como en el comentario de Mayra, setResult () no tiene nada que ver con su problema. Por alguna razón, la clase MyConfigure se termina por sí misma y cuando sucede, PreferenceActivity asume que puede haber un resultado de MyConfigure porque así es como escribió el código.
Esto también sucede cuando usted fuerza hacia atrás cualquier actividad thats comenzó con startAcitivityForResult () …
Así que, creo que es mejor centrarse en por qué su clase MyConfigure es forcely terminado.
- Patrón de interfaz de usuario de las acciones rápidas de Android
- Cómo cambiar el estilo de un TextView en tiempo de ejecución