2016-10-16 10 views
0

私はQrCodeをスキャンするためにZXingライブラリを使用します。私は、カスタムビューでスキャン私はカスタムアクティビティを開始し、新たな意図を呼び出す引き出しメニューから :ZXing QrCodeカスタムビューを閉じるには

integrator.setCaptureActivity(QrCodeCaptureActivity.class)。

public class QrCodeActivity extends AppCompatActivity { 

       private static final String TAG = "QrCodeActivity"; 
       private String message = ""; 

       @Override 
       protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 

        setContentView(R.layout.activity_qrcode); 

        setToolbar(); 
        scanBarcodeCustomLayout(); 

       } 

       /** Set la toolbar */ 
       private void setToolbar(){ 
        final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
        setSupportActionBar(toolbar); 
        getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
       } 

       public void scanBarcodeCustomLayout() { 
        IntentIntegrator integrator = new IntentIntegrator(this); 
        integrator.setOrientationLocked(false); 
        integrator.setCaptureActivity(QrCodeCaptureActivity.class); 
        integrator.initiateScan(); 
       } 

       @Override 
       protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
        IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); 
        if(result != null) { 
         message = result.getContents(); 
         if(result.getContents() == null) { 
          Log.d(TAG, "Cancelled scan"); 
          finish(); 
          // Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show(); 
         } else { 
          showConfirmDialog(); 
          Log.d(TAG, "Scanned: " + result.getContents()); 
          // Toast.makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show(); 
         } 
        } else { 
         // This is important, otherwise the result will not be passed to the fragment 
         super.onActivityResult(requestCode, resultCode, data); 
        } 
       } 

       private void showConfirmDialog(){ 
        Intent confirmIntent = new Intent(QrCodeActivity.this, QrCodeConfirmActivity.class); 
        confirmIntent.putExtra(Constants.QR_CODE_MESSAGE, message); 
        startActivity(confirmIntent); 
       } 
} 

キャプチャ活動は次のようになります。

public class QrCodeCaptureActivity extends CaptureActivity { 
    @Override 
    protected DecoratedBarcodeView initializeContent() { 
     setContentView(R.layout.capture_small);   
     return (DecoratedBarcodeView)findViewById(R.id.zxing_barcode_scanner); 
    } 
} 

あなたは、見ることができますスキャンが行われているとき、私は確認のために結果に新しいアクティビティを開きます。

private void showConfirmDialog(){ 
        Intent confirmIntent = new Intent(QrCodeActivity.this, QrCodeConfirmActivity.class); 
        confirmIntent.putExtra(Constants.QR_CODE_MESSAGE, message); 
        startActivity(confirmIntent); 
       } 

私がこの活動に参加しているときにこれを閉じると、私は空白の活動に戻ります。 私は、この空白の活動はカスタムapparenceのための捕獲活動だと思う:

integrator.setCaptureActivity(QrCodeCaptureActivity.class)。

どこが間違いですか?

おかげ

答えて

0

私は)私が直接法

integrator.initiateScan(代わりに、コールのアクティビティを呼び出す ...間違いを発見しました。

1

あなたがそれに追加する必要があり、単純な事:: 後::

startActivity(confirmIntent); 
finish(); 

つの新しい行を追加します。だからあなたの最後のQRコード活動が全く表示されなくなります。

関連する問題