首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个按钮扫描条形码

多个按钮扫描条形码
EN

Stack Overflow用户
提问于 2017-05-14 09:07:51
回答 1查看 482关注 0票数 0

我用zxing扫描条形码。我需要使用两个按钮进行扫描。一个将在条形码扫描时执行一个任务,另一个将执行其他任务。我想这样处理点击。

代码语言:javascript
复制
@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()方法中调用哪个按钮

代码语言:javascript
复制
public void onActivityResult(int requestCode, int resultCode, Intent intent) {}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-14 13:02:08

您可以添加一个类范围变量来存储正在运行的模式或类型,在每个按钮上为该变量设置一个不同的值,而onActivityResult()则根据该变量决定如何处理结果。

前任,

代码语言:javascript
复制
//class scope
int mode = 0;

onClick将是这样的:

代码语言:javascript
复制
@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:

代码语言:javascript
复制
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保存活动状态(至少是模式)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43962186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档