我一直在寻找互联网上的答案。
问题是,我找到了很多方法在我的应用程序中,在一项活动中实现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();
}
});
现在我想让它在Fragment中工作。 问题是,它启动了一项新活动(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());
它获取活动,但它是一个片段,而不是一个活动。 我该如何解决这个问题?
首先与我的Activity进行通信,其中包含片段,然后获得结果? 请帮忙,谢谢:)
答案 0 :(得分:1)
我会假设onActivityResult
的实施在你的Fragment
上,对吧?
IntentIntegrator
上的Fragment
实施是正确的。因此,只需从Fragment中删除onActivityResult
代码并将其放在Activity上即可。
我有类似的问题,这是我的解决方案。
答案 1 :(得分:0)
IntentIntegrator intentIntegrator=
IntentIntegrator.forSupportFragment(FragmentNme.this);
它对我来说解决了我的问题...其余所有代码都一样。