2017-05-14 14 views
0

バーコードをスキャンするためにzxingを使用しています。私はスキャンのために2つのボタンを使用する必要があります。バーコードがスキャンされると1つのタスクが実行され、もう1つは他のタスクを実行します。私はこのようなクリックを処理したい。複数のボタンがバーコードをスキャンするzxing

@Override 
public void onClick(View v) { 

    switch (v.getId()) { 

     case R.id.scanone: 
      IntentIntegrator scanIntegrator = new IntentIntegrator(this); 
      scanIntegrator.initiateScan(); 
      break; 

     case R.id.scantwo: 
      IntentIntegrator scanIntegrator = new IntentIntegrator(this); 
      scanIntegrator.initiateScan(); 
      break; 

     default: 
      break; 
    } 

} 

私は

public void onActivityResult(int requestCode, int resultCode, Intent intent) {} 
+0

を使用します。https:// githubの.com/zxing/zxing/blob/master/android-integration/src/main/java/com/google/zxing/integration/android/IntentIntegrator.java私はあなたができないと思う、あなたはライブラリをフォークする必要がありますあなたの変更を追加してください – miibpa

答えて

0

onActivityResult()方法で呼び出されたボタン区別することができますどのように異なる設定各ボタンの上に、あなたが実行しているMODEまたはTYPEを格納するクラススコープの変数を追加することができますこの変数の値はonActivityResult()で、結果をどのように処理するかを決定します。

@Override 
public void onClick(View v) { 

    switch (v.getId()) { 

     case R.id.scanone: 
      mode = 1; 
      break; 

     case R.id.scantwo: 
      mode = 2; 
      break; 

     default: 
      break; 
    } 

    //starting scanner code is the same, no need to write it in each case: 
    IntentIntegrator scanIntegrator = new IntentIntegrator(this); 
    scanIntegrator.initiateScan(); 
} 

とonActivityResult:

public void onActivityResult(int requestCode, int resultCode, Intent intent) { 

    //if resultCode OK... 
    //if scan result not null... 

    if(mode == 1){ 
     doActionOne(); 
    }else if (mode == 2){ 
     doActionTwo(); 
    } 
} 

あなたがこれを必要とすること、そしてあなたがいないことがあります。のonClickは次のようになります

EX、

//class scope 
int mode = 0; 

時々活動が一時停止し、再開するので、あなたが活動状態(少なくともモード)を保存することもできますので、mode値は、失われる可能性があります。これによるとonSaveInstanceState

+0

ありがとうyazan。私はこのようなことをした。 – user1377504

関連する問題