Pregunta

Tengo una aplicación que necesita escanear un código de barras para obtener un código antes de que pueda continuar. Yo uso este código para iniciar la actividad de análisis:

finish = (Button) findViewById(R.id.finishButton);
        finish.setOnClickListener(new OnClickListener() {
            public void onClick(View viewParam) {

                /*Prompt the user to scan the barcode */
                new AlertDialog.Builder(Visit.this)
                .setMessage("Please Scan the clients barcode to complete the visit")
                .setPositiveButton("Scan Barcode", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        //Start the scan application
                        Intent intent = new Intent("com.google.zxing.client.android.SCAN");
                        startActivityForResult(intent, 0);
                    }
                })

                .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        //Execute some method call
                        Toast.makeText(Visit.this, "Scan declined...", Toast.LENGTH_SHORT).show();
                    }
                })
                .show();
                /* End of Scan prompt */
            }
        });

El código anterior establece un oyente en un botón etiquetado finished. Cuando se hace clic en el botón, se muestra un mensaje que pregunta al usuario escanear un código de barras o cancelar.

Al hacer clic en el botón escaneo de código de barras botón se inicia una nueva actividad que permite iniciar el análisis.

he puesto el siguiente código para leer el resultado de la exploración en el regreso de la exploración:

/* Return from scanning barcode */
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
;
      if (resultCode == Activity.RESULT_OK && requestCode == 0) {
        Bundle extras = data.getExtras();
        String result = extras.getString("SCAN_RESULT");
      }
      Toast.makeText(Visit.this, "request code: "+requestCode+" result code = "+resultCode+ "\nRESULT_OK: "+Activity.RESULT_OK, Toast.LENGTH_SHORT).show();
    }

¿Qué forma muy simple (por ahora) muestra el resultado actividad en un mensaje de aviso emergente.

El problema que estoy teniendo es que el método onActivityResult se activa tan pronto como se presiona el botón de código de barras escaneado.

El proceso de escaneo funciona bien como puedo ver los resultados de la exploración en el Logcat., Sin embargo, ya que se activa demasiado pronto el método onActivityResult nunca obtiene el resultado de la exploración y el código de resultado es siempre -1

Me estoy perdiendo un paso aquí? ¿hay alguna manera de conseguir a onActivityResult que esperar hasta que termine la actividad real?

¿Fue útil?

Solución

Parece que el escáner de código de barras que estoy usando tiene un error en particular en él para interfaces de lengüeta con solo caso en el manifiesto que es la forma en que lo tenía.

La eliminación de la estipulación de instancia única me permitió hacer un corte en él eso funciona a la perfección.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top