Android studio - 从片段

时间:2016-11-21 16:52:03

标签: android qr-code

我一直在寻找互联网上的答案。

问题是,我找到了很多方法在我的应用程序中,在一项活动中实现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进行通信,其中包含片段,然后获得结果? 请帮忙,谢谢:)

2 个答案:

答案 0 :(得分:1)

我会假设onActivityResult的实施在你的Fragment上,对吧?

IntentIntegrator上的Fragment实施是正确的。因此,只需从Fragment中删除onActivityResult代码并将其放在Activity上即可。

我有类似的问题,这是我的解决方案。

答案 1 :(得分:0)

IntentIntegrator intentIntegrator=
IntentIntegrator.forSupportFragment(FragmentNme.this);

它对我来说解决了我的问题...其余所有代码都一样。