认识到Intent的发送地点

时间:2012-08-21 11:17:35

标签: android android-intent

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

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

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

4 个答案:

答案 0 :(得分: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){
        // ... 
   }
}

答案 1 :(得分:1)

最简单的方法之一就是传递例如int intent in intent,from activity A,pass 1,from activity B pass 2.然后使用get extra并读取数字,现在你知道这个意图来自哪个活动来自。当然有更复杂的方法,但这是最简单的方法。

答案 2 :(得分: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" );

答案 3 :(得分:0)

如果您开始像这样的条形码活动

 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的答案更容易!