在活动开始之前触发了Android onActivityResult!

Kev*_*haw 4 android barcode-scanner android-activity onactivityresult

我有一个应用程序需要扫描条形码才能获得代码才能继续.

我使用此代码开始扫描活动:

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 */
            }
        });
Run Code Online (Sandbox Code Playgroud)

上面的代码所做的是在标记为"已完成"的按钮上设置监听器.单击该按钮时,它会显示一个提示,要求用户扫描条形码或取消.

单击"扫描条形码"按钮可启动一项新活动,开始扫描.

我设置了以下代码来读取扫描返回时的扫描结果:

/* 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();
    }
Run Code Online (Sandbox Code Playgroud)

这非常简单(现在)在toast消息中输出avtivity结果.

我遇到的问题是,只要按下扫描条形码按钮,就会触发onActivityResult方法.

扫描过程正常,因为我可以在logcat中看到扫描结果.但是因为它太快触发,onActivityResult方法永远不会得到扫描结果,结果代码总是-1

我在这里错过了一步吗?有没有得到onActivityResult等到活动实际结束?

谢谢

凯文

Kev*_*haw 9

没关系,似乎我正在使用的条形码扫描器在清单中有一个特定的错误,用于清单中的单个实例的标签界面,这就是我的方式.

删除单实例规定允许我对它进行完美的工作.

哦,你生活和学习.

谢谢

凯文