ZXING Android嵌入式IntentIntegrator的用法
我是Android开发的新手,仍然试图掌握一些概念。 我发现最好的学习方法是通过项目直接进入深层。 话虽如此,这是我的问题:
我已将ZXing Android Embedded集成到我的应用程序中; 但是,我无法理解您使用IntentIntegrator的方式。 我正在尝试做的就是当用户点击按钮时将QR扫描仪调到屏幕上。 我一直在尝试按照他们的github链接[这里] [1]的说明,但一直没有成功。
这是我的function到目前为止的样子:
button.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { IntentIntegrator integrator = new IntentIntegrator(this); IntentIntegrator.forFragment(this).initiateScan(); } });
我一直收到错误说:
错误:(109,25)错误:类IntentIntegrator中的构造函数IntentIntegrator不能应用于给定的类型; required:找到的活动:意图原因:实际参数Intent无法通过方法调用转换转换为Activity
此外,当我将鼠标放在Android Studio中的’(this)’时,它说:
匿名的android.view.View.onClickListener
任何帮助将不胜感激,谢谢! 如果您需要任何其他信息,请告诉我。
当你在onClick
说this
时,你正在引用你的OnClickListener
而不是你的Fragment
。 你需要引用你的Fragment
,最简单的方法就是设置一个全局变量并将其myFragment
或者你喜欢的东西,然后分配它。 例如:
Fragment myFragment = this; public void myFunction(){ // Code and stuff // button.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { IntentIntegrator integrator = new IntentIntegrator(this); IntentIntegrator.forFragment(myFragment).initiateScan(); } }); }
比ChrisStillwell更简单的解决方案是让您的activity- / fragment-class实现OnClickListener
,这样您就不需要引用变量:
public class SomeFragment extends Fragment implements View.OnClickListener { // Rest of your code @Override public void onClick(View v) { if (v.getId == button.getId) { IntentIntegrator integrator = new IntentIntegrator(getActivity()); IntentIntegrator.forFragment(this).initiateScan(); } } }
如果要实现片段类,请注意在创建IntentIntegrator
时必须调用getActivity()
。
以下可以工作:
btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new IntentIntegrator(getActivity()).initiateScan(); popupWindow.dismiss(); } });