RequestCode erróneo devuelto onActivityResult de otra actividad
Tengo una Activity
que llama otra Activity
, que llama a otras Activities
. Puedo enviar a la última Activity
para obtener un resultado, y luego enviar de vuelta el resultado a la primera Activity
.
El flujo es algo como
- resultCode siempre es 0 y la petición es siempre -1,. Activity.onActivityResult ();
- Siempre Nulo devuelto después de recortar una foto de un Uri en Android Lollipop?
- Inicie correctamente la Actividad de la Notificación independientemente del estado de la aplicación
- Método onActivityResult no está siendo llamado
- Zxing onActivityResult no se llama en Fragmento sólo en Actividad
A -> B -> C -> D -> C -> B -> A
Con el flujo de A
a D
se hace de startActivityForResult
y el flujo de D
a A
se hace de onActivityResult
.
De D
a B
el requestCode
es siempre el mismo (el que decidí), pero de B
a A
repentinamente cambia de mi valor a un valor aleatorio (en este caso particular 196614).
Este es el código que utilizo para llamar a la activity B
de la activity A
:
filterByCatalogue.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getActivity(), CatalogueContainerActivity.class); startActivityForResult(intent, Defines.FILTER_BY_CATALOGUE); } });
(Con filterByCatalogue
como FrameLayout
)
Este es el código que utilizo para devolver la activity A
:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == Defines.FILTER_BY_CATALOGUE) { if (resultCode == RESULT_OK) { Intent intent = new Intent(); intent.putExtra("article", data.getStringExtra("article")); setResult(RESULT_OK, intent); finish(); } } }
He buscado mucho pero no puedo encontrar dónde me equivoco …
- OnActivityResult devuelve datos nulos para una captura de imagen
- Fragmento de Android se está destruyendo pero recibiendo onActivityResult
- Iniciar Actividad de Fragmento utilizando Transición (soporte API 21)
- ACTION_INSTALL_PACKAGE
- Usando onActivityResult en Fragments
- OnActivityResult no llama al Fragmento
- OnActivityResult en el fragmento de diálogo
- Cámara Android: archivo vacío en el método onActivityResult
Solo reemplaza
startActivityForResult(intent, Defines.FILTER_BY_CATALOGUE);
con
getActivity().startActivityForResult(intent, Defines.FILTER_BY_CATALOGUE);
Funcionará seguro. 🙂
El código de solicitud no es aleatorio. Cuando se usan fragmentos de biblioteca de soporte v4, el índice de fragmentos se codifica en los 16 bits superiores del código de solicitud y el código de solicitud se encuentra en los 16 bits inferiores. El índice de fragmentos se utiliza posteriormente para encontrar el fragmento correcto para entregar el resultado. Referencia .
Por ejemplo, 196614 es realmente 3 << 16 + 6 donde 3 es el índice de fragmentos más uno y 6 es su código de solicitud.
Moral: No mezcle la actividad / fragmento startActivityForResult()
y onActivityResult()
. Cuando se inicia desde una actividad, procese el resultado en la actividad. Cuando se inicia desde un fragmento, procese el resultado en el fragmento.
- ¿La imagen resultante de la cámara Android debe girarse después de la captura?
- Jellybean (API 16) todavía no aparece en mi Android SDK Manager