私はインターネット上で答えを探しています。Androidスタジオ - フラグメントからQRコードスキャナーを開始
問題は、アプリでQRコードスキャナーを実装する方法が多数見つかりました。
これは、次のいずれかの方法である:
scan_btn = (Button) view.findViewById(R.id.scan_btn);
scan_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
IntentIntegrator integrator = new IntentIntegrator(getActivity());
integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES);
integrator.setPrompt("Scan!!");
integrator.setCameraId(0);
integrator.setBeepEnabled(false);
integrator.setBarcodeImageEnabled(false);
integrator.initiateScan();
}
});
は今、私はそれがフラグメントで動作するように取得したいです。 問題は、それが新しい活動(QRコードリーダー) を開始し、あるQRコード をスキャンしかし、私は私のonActivityResultで応答を取得いけない:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if (result != null) {
if (result.getContents() == null) {
System.out.println("Cancelled");
Toast.makeText(getActivity(), "You cancelled the scanning!", Toast.LENGTH_LONG).show();
} else {
System.out.println("Worked: " + result.getContents());
Toast.makeText(getActivity(), "scanned: " + result.getContents(), Toast.LENGTH_LONG).show();
}
} else {
super.onActivityResult(requestCode, resultCode, data);
}
}
しかし、何が間違って起こっていますか?
私はそれがこの部分に関係していると思います:
IntentIntegrator integrator = new IntentIntegrator(getActivity());
それは活動を取得しますが、それは代わりに、活動の、フラグメントです。 どうすればこの問題を解決できますか?
フラグメントを保持し、結果を得る自分のアクティビティに最初に通信しますか? 助けてください、ありがとう:)
コンストラクタでgetActivityの代わりにフラグメントを渡すだけです –