2017-07-14 33 views
-2

私は以下の問題があります:フラグメントから自分のスキャナを起動しようとしています。しかし実際には、このフラグメントのonActivityResultで結果をキャッチすることはできません。Zxing、フラグメントを呼び出して結果を取得

@Override 
public void onClick(View v){ 


    IntentIntegrator integrator = new IntentIntegrator(getActivity()); 

    integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES); 
    integrator.setCaptureActivity(HorizontalActivity.class); 
    integrator.setOrientationLocked(false); 
    integrator.initiateScan(); 


} 

私はまた、例のコード

IntentIntegrator.forFragment(getActivity()) 

を試みたが、私の問題は、私は.v4.App.FragmentActivityを使用していますが、KonstruktorのみApp.Fragmentのためであるということです。

多分あなたは私を助けることができますか?

答えて

0

あなたのフラグメント内でこれを試してみてください....ここ

IntentIntegrator.forFragment(this).initiateScan(); 
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); 
     if(result != null) { 
      if(result.getContents() == null) { 
       //Cancelled 
      } else { 
       //"Scanned Result=" + result.getContents() 
      } 
     } else { 
      super.onActivityResult(requestCode, resultCode, data); 
     } 

    } 
0

が私の解決策で、その活動からまたはフラグメントのいずれかと呼ばれることがあります。

fun scanQrCode() { 
    var intent = Intent(activity, ScanQrActivity::class.java) 
    intent.setAction(Intents.Scan.ACTION); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET) 

    intent.putExtra(Intents.Scan.PROMPT_MESSAGE, "Scan unit id") 
    intent.putExtra(Intents.Scan.CAMERA_ID, 0) 
    intent.putExtra(Intents.Scan.BEEP_ENABLED, true) 
    intent.putExtra(Intents.Scan.BARCODE_IMAGE_ENABLED, false) 
    this.startActivityForResult(intent, 1111) 

} 
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { 

    if (requestCode.equals(1111)) { 
     val contents = data?.getStringExtra(Intents.Scan.RESULT) 
     if (contents == null) 
      Toast.makeText(activity, "Canceled", Toast.LENGTH_LONG).show() 
     else { 
      Toast.makeText(activity, contents, Toast.LENGTH_LONG).show() 
     } 
    } 
} 
関連する問題