多个按钮扫描条码zxing

时间:2017-05-14 09:07:52

标签: android 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) {}

1 个答案:

答案 0 :(得分:0)

你可以添加一个类范围变量来存储你正在运行的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值可能会丢失,因为活动已暂停并恢复,因此您可能希望使用onSaveInstanceState保存活动状态(至少模式)