1

バーコード スキャナーを使用して、いくつかのコードをスキャンします。そのために、バーコード スキャナーでスキャン アクションのインテントを呼び出します。

問題は、メイン アクティビティの 2 つの異なる方法から、異なる目的 (異なるコード タイプのスキャン) で送信したいことです。インテント呼び出しがどこで開始されたかをonActivityResult()どのように区別できますか?

フラグやタグなどを使用できますか?

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

最も簡単な方法の1つは、たとえば、アクティビティA、パス1、アクティビティBパス2から、インテント内でint extraを渡すことです。次に、get extraを使用して番号を読み取ります。これで、このインテントがどのアクティビティから発生したかがわかります。もちろんもっと洗練された方法もありますが、これが最も簡単な方法です。

于 2012-08-21T11:24:31.770 に答える
0

If you start a activity to sacn barcode like this

 startActivityForResult(intent,0);

then from two different method, change your call like this

//From first method

  startActivityForResult(intent,1);

//From second method

 startActivityForResult(intent,2);

then

@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
}

}

EDIT: Ah, giZm0's answer is easier!

于 2012-08-21T11:39:40.600 に答える
0

インテントを送信するときはこれを使用します

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 に答える