2016-11-21 80 views
0

开始QR码扫描器我一直在寻找一个在互联网上的答案。Android工作室 - 从片段

事情是,我发现很多方法来实施一个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());  

它得到了活动,但它是一个片段,而不是活动。 我该如何解决这个问题?

首先通信我的活动,其中包含片段,然后得到结果? 请帮助,谢谢:)

+0

只需在构造函数中传递fragment而不是getActivity –

回答

0

我会推测onActivityResult的执行在Fragment上,对不对?

您的Fragment上的IntentIntegrator实施是正确的。所以,只需从Fragment中移除您的onActivityResult代码并将其放置在活动中。

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

+0

谢谢你,这是问题所在! –

1

也许你会在这篇文章中找到答案。

onActivityResult is not being called in Fragment

否则你必须分享你的代码提供更多的信息。按钮ant是附加到片段还是活动本身?在片段类中实现了显示的onActivityResult方法吗?

+0

他对你的问题分享了正确的回应,检查IntentIntegrator类的第338行 - > https://github.com/zxing/zxing/blob/master/android-integration /src/main/java/com/google/zxing/integration/android/IntentIntegrator.java,传递给构造函数的活动如此片段为空并且不正确地传递结果 –