1

我使用条形码扫描仪扫描一些代码。为此,我在条形码扫描仪中调用扫描操作意图。

问题是我想在我的主要活动中为不同的目的(不同的代码类型扫描)从 2 种不同的方法发送它。由于我只有一个答案,onActivityResult()如何区分 Intent 呼叫的开始位置?

我可以使用一些标志或标签或任何东西吗?

4

4 回答 4

5

您可以requestCode在开始活动时提供。然后,这将在覆盖时返回onActivityResult。通过这种方式,您可以区分请求。

private static final int METHOD_1_ID = 1;
private static final int METHOD_2_ID = 2;

private void sendIntentFromMethod2(){
    startActivityForResult(yourIntent, METHOD_2_ID);
}

private void sendIntentFromMethod1(){
    startActivityForResult(yourIntent, METHOD_1_ID);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
   if (requestCode == METHOD_1_ID){
        // ...
   }else if(requestCode == METHOD_2_ID){
        // ... 
   }
}
于 2012-08-21T11:32:15.670 回答
1

最简单的方法之一是在意图中传递例如 int extra,从活动 A 传递 1,从活动 B 传递 2。然后使用 get extra 并读取数字,现在您知道该意图源自哪个活动。当然还有更复杂的方法,但这是最简单的方法。

于 2012-08-21T11:24:31.770 回答
0

发送 Intent 时使用此

Intent.putExtra("caller", caller_id)

接收意图使用时

Bundle extras = getIntent().getExtras();
int id = extras.getInt("caller");

在调用 setResult 之前

intent.puInt("phrase", id);

在 onActivityResult 使用

Bundle  extras =  intent.getExtras();
int id = extras.getId( "selection" );
于 2012-08-21T11:26:30.380 回答
0

如果你像这样开始一个 sacn 条形码的活动

 startActivityForResult(intent,0);

然后从两种不同的方法,像这样改变你的电话

//从第一个方法

  startActivityForResult(intent,1);

//从第二种方法

 startActivityForResult(intent,2);

然后

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
   if(requestCode==1)
{
//This is result for 1st method
}
   else if(requestCode==2)
{
//This is result for 2st method
}

}

编辑:啊,giZm0 的答案更简单!

于 2012-08-21T11:39:40.600 回答