Frage

ich eine App haben, dass der Bedarf einen Barcode scannen um einen Code zu erhalten, bevor es weitergehen kann. Ich benutze diesen Code die Prüfaktivität zu starten:

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 */
            }
        });

Der obige Code setzt einen Hörer auf eine Schaltfläche mit der Bezeichnung finished. Wenn die Schaltfläche geklickt wird, zeigt es eine Aufforderung, den Benutzer auffordert, einen Barcode zu scannen oder stornieren.

Durch Klicken auf die Scan Barcode Taste startet eine neue Aktivität, die die Scan beginnt.

Ich habe den folgenden Code eingerichtet das Ergebnis des Scans auf der Rückkehr zu lesen aus dem Scan:

/* 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();
    }

, die sehr einfach (noch) gibt das Aktivitätsergebnis in einem Toast Nachricht.

Das Problem, das ich habe, ist, dass die onActivityResult Methode so schnell ausgelöst wird, wie ich die Scan-Barcode-Taste drücken.

Der Scan-Vorgang funktioniert gut, wie ich die Ergebnisse des Scans in der logcat sehen kann., Aber weil es zu ausgelöst wird, sobald die onActivityResult Methode wird nie das Scan-Ergebnis und das Ergebnis Code wird immer -1

fehlt bin ich einen Schritt hier? bis die Aktivität tatsächlich beendet wird someway zu onActivityResult kennen warten?

War es hilfreich?

Lösung

Es scheint, wie der Barcode-Scanner verwende ich einen besonderen Fehler in der es für Registerkarte Schnittstellen mit einzelner Instanz im Manifest, das ist, wie ich es hatte.

die einzige Instanz Bedingung Entfernen erlaubte mir einen Hack zu tun, auf es das ist, perfekt zu arbeiten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top