Extraño problema con startActivity causando que mi escáner no funcione correctamente

Así que, después de terminar mi actividad de escáner con

btn_take_photo.setOnClickListener(new FloatingActionButton.OnClickListener() { @Override public void onClick(View view) { String carde = cardnumberbox.getText().toString().trim(); if (carde.matches("")) { Toast.makeText(getApplicationContext(), getString(R.string.Skan_Udfyld_Kort_Nummer), Toast.LENGTH_SHORT).show(); cardnumberbox.requestFocus(); return; } Intent i = new Intent(ScanActivity.this, CameraActivity.class); i.putExtra("EXTRA_SESSION_ID", carde); startActivity(i); } }); 

Para ir a mi actividad de cámara para que pueda tomar algunas fotos y volver con

  public void btn_aprove2(View view) { Intent i = new Intent(CameraActivity.this, ScanActivity.class); String counts = count.getText().toString().trim(); i.putExtra("EXTRA_SESSION_IDs", counts); String carde = cardnumberbox2.getText().toString().trim(); i.putExtra("EXTRA_SESSION_ID", carde); startActivity(i); finish(); 

A la escáneractividad de nuevo. Mi escáner no funciona correctamente, pero si presiono el botón de retroceso vuelve a la escáneractividad de nuevo en lugar de mi menú por lo que parece que la escáneractividad se ejecuta dos veces y sólo uno de ellos son funcionales, pero es aquí donde me confunde

Porque si no presionas el botón btn_aprove2 y solo utilizas el botón de retroceso en su lugar obtienes exactamente el mismo problema pero aquí mi escáneractividad no se ejecuta dos veces como cuando presiono el botón de regreso solo me lleva de regreso al menú

Un video del tema

Mediante la eliminación de mi orientación de la pantalla del manifiesto (para que pueda rotar) mi escáner ahora funcionan, pero sólo si primero giro a paisaje y girar de nuevo a potrait

Y veo en el registro es que sólo está llamando al oncreate al girar y sólo en reanudar y pausa en el botón (startactivity / finlandés)

Estoy totalmente perdido en cómo conseguir esto para trabajar.

En github con demo api y documentación en el wiki y con las clases thoose que se están utilizando

Si saltas a la actividad Cámara para obtener algunos datos, te recomiendo que inicies la actividad para un resultado (startActivityForResult) sin terminar la actividad del escáner. Esto le daría una buena pila trasera de trabajo (utilizando el botón de retroceso para volver de la cámara al escáner).

Además de eso, ¿por qué está utilizando i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); ? Estás comenzando una nueva actividad y terminando la antigua. No veo por qué realmente se necesita esta bandera. ¿Cuál es tu android:launchMode en tu manifiesto y estás seguro de saber lo que FLAG_ACTIVITY_NEW_TASK está haciendo y es lo que quieres?

Anyways de lo que nos dijo que parece que su ejemplo realmente debe utilizar startActivityForResult() sin llamar finish() :

  1. Presione el botón de menú en alguna actividad
  2. Iniciar cámara y hacer algo
  3. Presione algún botón para iniciar Scanner
  4. Escanee algo y termine el escáner con el resultado (o cancele el escáner haciendo clic de nuevo)
  5. Recuperar el resultado del escáner en la cámara y hacer algo con él o continuar con el flujo de trabajo anterior cuando el escáner se canceló
  6. Una vez que haya terminado con su flujo de trabajo, termine la cámara para que termine en su actividad donde comenzó la cámara
  • Biblioteca de archivos de Android (aar) vs jar estándar
  • Imagen de carga perezosa con barra de progreso hacer corrupción de la imagen cuando la imagen mostrada
  • Cifrado RSA en Java: ¿Problemas de plataforma cruzada?
  • Error al iniciar la primera aplicación de prueba: Android Packaging Problem?
  • Ventana de superposición del sistema Android
  • Cambiar el ícono del botón Drawable de Android mediante programación
  • Cómo convertir datos de Firebase a objetos Java ...?
  • ¿Cómo recuperar un contexto de una clase que no sea de actividad?
  • ¿Por qué algunos móviles xhdpi no muestran la imagen ubicada en / res / drawable solamente?
  • Parse Json en el estudio android de String
  • ¿Cómo comprobar si el paquete existe desde dentro del procesador de anotación (en tiempo de compilación)?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.