我有三个按钮,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.
答案 0 :(得分:0)
两个选项:
一,您可以修改IntentIntegrator源代码,使其采用不同的REQUEST_CODES作为构造函数参数(或者只添加一个setRequestCode参数)。然后在onActivityResult中,检查返回的requestCode(每个按钮都会返回不同的请求代码)。这将是推荐的方法。
第二个选项是hacky:在你的代码中,创建一个成员变量来跟踪哪个是按下的最后一个按钮(检查onLongClick中传递的视图是否与button1,button2或button3匹配),并在onActivityResult中使用该信息选择如何处理从条形码扫描仪传回的结果。