如何使用Android上的三个不同按钮和新的IntentIntegrator对条形码扫描器进行不同的扫描结果

时间:2012-02-01 18:55:38

标签: android barcode

我有三个按钮,onlongpress通过条形码扫描仪调出我的新IntentIntegrator扫描。我成功地扫描并使用扫描的代码,当它只有一个按钮时执行某些操作。

如何传递一个值或什么东西,当“protected void onActivityResult”被调用时,它会知道它来自哪个按钮,所以我可以根据长按的按钮做不同的事情。

我目前的设置是这样的:

button1.setOnLongClickListener(this);
button2.setOnLongClickListener(this);
button3.setOnLongClickListener(this);}
}

public boolean onLongClick(View v) {

    IntentIntegrator integrator = new IntentIntegrator(this);
    integrator.initiateScan();
    return true;
}

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
case IntentIntegrator.REQUEST_CODE:
         if (resultCode == Activity.RESULT_OK) {

            IntentResult intentResult = 
               IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);

            if (intentResult != null) {

               String contents = intentResult.getContents();
               String format = intentResult.getFormatName();
               //do stuff with the scan. But I want to do different stuff depending on which button was pressed. 

1 个答案:

答案 0 :(得分:0)

两个选项:

一,您可以修改IntentIntegrator源代码,使其采用不同的REQUEST_CODES作为构造函数参数(或者只添加一个setRequestCode参数)。然后在onActivityResult中,检查返回的requestCode(每个按钮都会返回不同的请求代码)。这将是推荐的方法。

第二个选项是hacky:在你的代码中,创建一个成员变量来跟踪哪个是按下的最后一个按钮(检查onLongClick中传递的视图是否与button1,button2或button3匹配),并在onActivityResult中使用该信息选择如何处理从条形码扫描仪传回的结果。