【发布时间】:2017-12-12 17:14:21
【问题描述】:
我正在 Android Studio 中开发一个移动应用程序,并且有 2 个按钮。 每个按钮都会使用 Zxing 库启动条码/QR 扫描。
我遇到的问题是我将第一次扫描的结果分配给按钮文本并且工作正常。
但是,当将第二次扫描的结果分配给其按钮时,它不起作用,因为只有一个 onActivityResult?
我知道如果我复制并粘贴代码并尝试覆盖 onActivityResult2,系统将忽略它,因为它无法被系统识别。
但是,我该如何解决这个问题?
这是我的 onActivityResult 代码和 onActivityResult2 代码,只是为了展示我想要实现的目标:
onActivityResult:
工作代码:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if (result != null) {
//if qrcode has nothing in it
if (result.getContents() == null) {
Toast.makeText(this, "Result Not Found", Toast.LENGTH_LONG).show();
} else {
//if qr contains data
try {
//converting the data to json
JSONObject obj = new JSONObject(result.getContents());
} catch (JSONException e) {
e.printStackTrace();
if (buttonId == R.id.buttonScan) {
machineType = result.getContents();
scanBarcode.setText("Machine Type: " + machineType);
} else if (buttonId == R.id.buttonScan2) {
workOrderNumber = result.getContents();
scanWorkOrder.setText("Work Order Number: " + workOrderNumber);
}
else if (buttonId == 0) {
???
}
}
}
} else {
super.onActivityResult(requestCode, resultCode, data);
}
}
调用库的按钮:
private IntentIntegrator qrScan;
private IntentIntegrator qrScan2;
int buttonId = 0; //THIS IS GLOBAL
//Initialise Buttons
scanBarcode = findViewById(R.id.buttonScan);
scanWorkOrder = findViewById(R.id.buttonScan2);
submit = findViewById(R.id.buttonSubmit);
sharedPreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
//Initialize Scanners
qrScan = new IntentIntegrator(this);
scanBarcode.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
qrScan.initiateScan();
buttonId = R.id.buttonScan;
}
});
scanWorkOrder.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
qrScan.initiateScan();
buttonId = R.id.buttonScan2;
}
});
【问题讨论】:
-
我们看不到 qrScan 和 qrScan2 的类型。
-
@greenapps 已更新。再次道歉
-
onActivityResult(int requestCode...requestCode 得到哪些值?它们有什么不同吗? -
请告诉您单击扫描按钮时会发生什么。扫描仪窗口/活动是否涵盖了您的活动?你能同时调用两个扫描器吗?
-
@greenapps 是的,当我单击每个按钮时,它会作为扫描仪进入相机......假设我只是对获得不同的结果感兴趣?我不太确定它不会让我调试的请求代码
标签: java android zxing barcode-scanner