Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从发送意图的位置识别_Android_Android Intent - Fatal编程技术网

Android 从发送意图的位置识别

Android 从发送意图的位置识别,android,android-intent,Android,Android Intent,我用条形码扫描仪扫描一些代码。为此,我在条形码扫描仪中调用了扫描操作的意图 问题是我想从我的主要活动中的两个不同方法发送它,用于不同的目的(不同的代码类型扫描)。由于我只有一个答案是onActivityResult()如何区分意图调用的起始位置 我能用些旗子或标签什么的吗 最简单的方法之一是在intent中传递int-extra,从活动A传递1,从活动B传递2。然后使用get extra并读取数字,现在您知道此意图源自哪个活动。当然还有更复杂的方法,但这是最简单的方法。最简单的方法之一是传递in

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

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


我能用些旗子或标签什么的吗

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

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

当发送意图时,请使用此方法

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" );

发送意图时,请使用此选项

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" );

启动活动时,可以提供
requestCode
。然后,在重写ActivityResult时,将返回此信息。通过这种方式,您可以区分请求

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){
        // ... 
   }
}

启动活动时,可以提供
requestCode
。然后,在重写ActivityResult时,将返回此信息。通过这种方式,您可以区分请求

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){
        // ... 
   }
}

如果您像这样启动sacn条形码的活动

 startActivityForResult(intent,0);
然后从两种不同的方法,像这样更改通话

//从第一种方法开始

  startActivityForResult(intent,1);
//从第二种方法

 startActivityForResult(intent,2);
然后

}


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

如果您像这样启动sacn条形码的活动

 startActivityForResult(intent,0);
然后从两种不同的方法,像这样更改通话

//从第一种方法开始

  startActivityForResult(intent,1);
//从第二种方法

 startActivityForResult(intent,2);
然后

}

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