代码之家  ›  专栏  ›  技术社区  ›  Kevin Bradshaw

Android onActivityResult甚至在活动开始前触发!

  •  4
  • Kevin Bradshaw  · 技术社区  · 14 年前

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

    上面的代码在标记为 finished

    扫描条形码

    我设置了以下代码,以便在扫描返回时读取扫描结果:

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

    我的问题是 onActivityResult 方法会在我按下扫描条形码按钮时触发。

    扫描过程工作得很好,因为我可以在logcat中看到扫描的结果,但是因为它触发得太快了 活动结果 方法从不获取扫描结果,结果代码始终为-1

    活动结果

    1 回复  |  直到 6 年前
        1
  •  9
  •   double-beep hudson solomon    6 年前

    似乎我使用的条形码扫描器有一个特殊的错误,在它的标签界面与清单中的一个实例,这是我如何有它。