多按钮扫描条码 zxing
multiple buttons scanning barcodes zxing
我正在使用 zxing 扫描条码。我需要使用 2 个按钮进行扫描。扫描条形码时,一个将执行一项任务,另一个将执行其他任务。我想这样处理点击。
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.scanone:
IntentIntegrator scanIntegrator = new IntentIntegrator(this);
scanIntegrator.initiateScan();
break;
case R.id.scantwo:
IntentIntegrator scanIntegrator = new IntentIntegrator(this);
scanIntegrator.initiateScan();
break;
default:
break;
}
}
如何区分在 onActivityResult()
方法中调用了哪个按钮
public void onActivityResult(int requestCode, int resultCode, Intent intent) {}
您可以添加一个 class-scope 变量来存储您的 MODE 或 TYPE 运行,在每个按钮上为此变量设置不同的值,并且 onActivityResult()
基于在该变量上,您决定如何处理结果。
例如,
//class scope
int mode = 0;
onClick 将是这样的:
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.scanone:
mode = 1;
break;
case R.id.scantwo:
mode = 2;
break;
default:
break;
}
//starting scanner code is the same, no need to write it in each case:
IntentIntegrator scanIntegrator = new IntentIntegrator(this);
scanIntegrator.initiateScan();
}
和 onActivityResult:
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
//if resultCode OK...
//if scan result not null...
if(mode == 1){
doActionOne();
}else if (mode == 2){
doActionTwo();
}
}
你可能需要这个,也可能不需要:
有时、mode
值可能会丢失,因为activity被暂停和恢复,所以你可能想保存activity 状态(至少模式)使用 onSaveInstanceState
我正在使用 zxing 扫描条码。我需要使用 2 个按钮进行扫描。扫描条形码时,一个将执行一项任务,另一个将执行其他任务。我想这样处理点击。
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.scanone:
IntentIntegrator scanIntegrator = new IntentIntegrator(this);
scanIntegrator.initiateScan();
break;
case R.id.scantwo:
IntentIntegrator scanIntegrator = new IntentIntegrator(this);
scanIntegrator.initiateScan();
break;
default:
break;
}
}
如何区分在 onActivityResult()
方法中调用了哪个按钮
public void onActivityResult(int requestCode, int resultCode, Intent intent) {}
您可以添加一个 class-scope 变量来存储您的 MODE 或 TYPE 运行,在每个按钮上为此变量设置不同的值,并且 onActivityResult()
基于在该变量上,您决定如何处理结果。
例如,
//class scope
int mode = 0;
onClick 将是这样的:
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.scanone:
mode = 1;
break;
case R.id.scantwo:
mode = 2;
break;
default:
break;
}
//starting scanner code is the same, no need to write it in each case:
IntentIntegrator scanIntegrator = new IntentIntegrator(this);
scanIntegrator.initiateScan();
}
和 onActivityResult:
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
//if resultCode OK...
//if scan result not null...
if(mode == 1){
doActionOne();
}else if (mode == 2){
doActionTwo();
}
}
你可能需要这个,也可能不需要:
有时、mode
值可能会丢失,因为activity被暂停和恢复,所以你可能想保存activity 状态(至少模式)使用 onSaveInstanceState