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);

它帮我解决了我的问题...剩下的所有代码都是一样的。