我有一个应用程序需要扫描条形码才能继续获取代码。我使用此代码开始扫描 Activity :
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
的按钮上设置了一个监听器。单击该按钮时,它会显示一个提示,要求用户扫描条形码或取消。单击“扫描条形码”按钮启动一个新 Activity ,该 Activity 开始扫描。
我设置了以下代码来读取扫描返回的扫描结果:
/* 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();
}
这非常简单(目前)以 Toast 消息输出 Activity 结果。
我遇到的问题是,只要我按下扫描条形码按钮,就会触发
onActivityResult
方法。扫描过程工作正常,因为我可以在 logcat 中看到扫描的结果,但是因为它触发得太快,
onActivityResult
方法永远不会得到扫描结果,结果代码始终为 -1我在这里错过了一步吗?有没有办法让
onActivityResult
等到 Activity 实际完成? 最佳答案
我正在使用的条形码扫描仪似乎有一个特定的错误,用于 list 中具有单个实例的选项卡界面,这就是我的方式。
删除单实例规定让我可以对其进行完美的破解。
关于android - 为什么在 Activity 开始之前就触发了 onActivityResult ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3524140/