Android studio - 从片段开始二维码扫描
Android studio - start QR code scanner from fragment
我一直在网上寻找答案。
事实是,我发现了很多在我的应用程序中实现 QR 码扫描仪的方法,activity。
这是其中一种方式:
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();
}
});
现在我想让它在片段中工作。
问题是,它开始一个新的activity(二维码reader)
扫描二维码
但是我在 Activity 结果中没有得到回应:
@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,但它是一个片段,而不是 activity。
我该如何解决这个问题?
先与我的 Activity 进行通信,后者保存片段,然后获取结果?
请帮忙,谢谢:)
我假设 onActivityResult
的实现是在你的 Fragment
上,对吗?
您 Fragment
上的 IntentIntegrator
实施是正确的。因此,只需从 Fragment 中删除您的 onActivityResult
代码并将其放在 Activity.
我遇到了类似的问题,这是我的解决方案。
IntentIntegrator intentIntegrator=
IntentIntegrator.forSupportFragment(FragmentNme.this);
它帮我解决了我的问题...剩下的所有代码都是一样的。
我一直在网上寻找答案。
事实是,我发现了很多在我的应用程序中实现 QR 码扫描仪的方法,activity。
这是其中一种方式:
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();
}
});
现在我想让它在片段中工作。 问题是,它开始一个新的activity(二维码reader) 扫描二维码 但是我在 Activity 结果中没有得到回应:
@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,但它是一个片段,而不是 activity。 我该如何解决这个问题?
先与我的 Activity 进行通信,后者保存片段,然后获取结果? 请帮忙,谢谢:)
我假设 onActivityResult
的实现是在你的 Fragment
上,对吗?
您 Fragment
上的 IntentIntegrator
实施是正确的。因此,只需从 Fragment 中删除您的 onActivityResult
代码并将其放在 Activity.
我遇到了类似的问题,这是我的解决方案。
IntentIntegrator intentIntegrator=
IntentIntegrator.forSupportFragment(FragmentNme.this);
它帮我解决了我的问题...剩下的所有代码都是一样的。