Android: Captura del retorno de una actividad
Tengo una pregunta sobre el lanzamiento de nuevas actividades. Todo se reduce a esto. Tengo 3 pestañas en una vista
A) contains gMap activity B) camera activity C) some random text fields.
Requisito es que la aplicación se ejecuta en modo vertical.
- Android: ¿Puedo usar esta intención de una aplicación de terceros?
- La notificación no se elimina al hacer clic en el botón de acción incluso después de proporcionar el ID de notificación
- Esquema host no funciona en androide lollipop, haga clic en el enlace para abrir la aplicación
- No se pueden obtener filtros de intenciones de un paquete
- OnActivityResult sólo se reconoce como variable
Las 3 pestañas funcionan como se esperaba con la excepción de la superficie de vista previa de la cámara (B). Se gira 90 grados. Ellos sólo la forma de hacerlo correcto es configurar la aplicación para el paisaje que lanza todas mis pestañas alrededor, y es prácticamente imposible.
Mi solución es la siguiente: replace
Mi actividad de cámara con una actividad regular que está vacía con la excepción de
Intent i = new Intent(this,CameraActivity.class); startActivity(i);
Esto inicia mi CameraActivity. Y eso funciona bien. Tuve que hacer un diseño lineal e incluir 3 imágenes que parecen lengüetas reales, por lo que puedo tratar de imitar el funcionamiento de las pestañas mientras gira la pantalla para el paisaje y mantener las imágenes como retrato. El usuario puede hacer clic en una de las imágenes (botones) para mostrar la siguiente pestaña. Este es mi problema. Debería salir de mi "actividad de la cámara" volviendo a la "actividad en blanco" en una pestaña, donde debería interpretarse para hacer clic en la pestaña deseada de mi imagen.
Lo principal es, cuando regresa, vuelve a una página en blanco (negro) debajo de una pestaña (porque está 'vacío'). ¿Cómo puedo capturar el evento de retorno de vuelta a la página que llamó a la actividad y, a continuación, ver qué acciones realizaron?
Puedo fijar un onclicklistener donde puedo responder a las lengüetas falsas (imágenes) que son chascadas para salir de la actividad de la cámara. Al salir, la pestaña debe actualizarse para que sea donde regresa. ¿alguna sugerencia?
Gracias,
- Selección de galería de Android como Whatsapp
- Cómo implementar simple como botón en listview de cada elemento
- Deep Link no funciona en Chrome para Android
- Agregar imagen a twitter compartir intención android
- Esquema de URL de Android: intent.getData () == null (PhoneGap)
- ¿Pasar el objeto GoogleApiClient a otra actividad?
- Pasar objetos que extienden una clase abstracta entre actividades
- Actividad de inicio de Android sin crear una nueva instancia
Me centraré en responder a cómo resolver su workround para que se comporte como usted desea.
Para capturar acciones realizadas en una Actividad dentro de otra se requieren tres pasos.
Inicie la actividad secundaria (su "actividad de la cámara") como una subactividad mediante startActivityForResult
lugar de startActivity
.
Intent i = new Intent(this,CameraActivity.class); startActivityForResult(i, STATIC_INTEGER_VALUE);
Dentro de la subactividad (actividad de la cámara), en lugar de simplemente cerrar la Actividad cuando un usuario hace clic en la imagen de la ficha diferente, debe crear un nuevo Propósito e incluir el índice de la ficha para mostrar cuando regrese a la aplicación principal utilizando el paquete de extras . Para devolverlo a la llamada setResult
antes de llamar al finish
para cerrar la actividad de la cámara.
resultIntent = new Intent(null); resultIntent.putExtra(PUBLIC_STATIC_STRING_IDENTIFIER, tabIndexValue); setResult(Activity.RESULT_OK, resultIntent); finish();
El paso final se encuentra en la actividad de llamada, anule onActivityResult
para escuchar las devoluciones de llamada de la actividad de la cámara. Obtenga el extra de la Intención devuelta para determinar el índice de la pestaña que debe mostrar.
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch(requestCode) { case (STATIC_INTEGER_VALUE) : { if (resultCode == Activity.RESULT_OK) { int tabIndex = data.getIntExtra(PUBLIC_STATIC_STRING_IDENTIFIER); // TODO Switch tabs using the index. } break; } } }
- ¿Cómo prueba una aplicación de Android en varias actividades?
- Vista web de Android: borra completamente el caché