Pregunta

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.

El requisito es que la aplicación se ejecute en modo vertical.

Las 3 pestañas funcionan como se espera con la excepción de la Superficie de vista previa de la cámara (B). Se gira 90 grados. La única forma de corregirlo es configurar la aplicación en horizontal, que arroja todas mis pestañas y es prácticamente inviable.

Mi solución es esta: reemplazar

actividad de mi 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 pestañas reales, por lo que puedo intentar imitar el funcionamiento de las pestañas mientras giro la pantalla hacia el paisaje y mantener las imágenes como retratos. 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 cámara' y volver a la 'actividad en blanco' en una pestaña, donde debería interpretarse que hace clic en la pestaña deseada de mi imagen.

Lo principal es que, cuando regresa, vuelve a una página en blanco (negra) debajo de una pestaña (porque está 'vacía'). ¿Cómo puedo capturar el evento de regreso a la página que llamó a la actividad y luego ver qué acción realizaron?

Puedo configurar un onclicklistener donde puedo responder a las pestañas falsas (imágenes) en las que se hace clic para salir de la actividad de la cámara. Al salir, la pestaña debe actualizarse para que sea allí donde regrese. ¿Alguna sugerencia?

Gracias,

¿Fue útil?

Solución

Me concentraré en responder cómo resolver su entorno de trabajo para que se comporte como lo desee.

Para capturar acciones realizadas en una Actividad dentro de otra, se requieren tres pasos.

Inicie la Actividad secundaria (su 'Actividad de cámara') como una subactividad utilizando startActivityForResult en 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 pestaña diferente, debe crear un nuevo Intento e incluir el índice de la pestaña para mostrar cuando regrese a la aplicación principal usando El paquete de extras. Para devolverlo a la llamada principal, setResult antes de llamar a terminar 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 es 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 debería 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; 
    } 
  } 
} 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top