我是Android开发的新手,仍然试图掌握一些概念。我发现最好的学习方法是通过项目直接进入深层。话虽如此,这是我的问题:
我已将ZXing Android Embedded集成到我的应用程序中;但是,我无法理解您使用IntentIntegrator的方式。我正在尝试做的就是当用户点击按钮时将QR扫描仪调到屏幕上。我一直在尝试按照他们的github链接[这里] [1]的说明,但一直没有成功。
到目前为止,这是我的功能:
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
IntentIntegrator integrator = new IntentIntegrator(this);
IntentIntegrator.forFragment(this).initiateScan();
}
});
我不断收到错误说:
错误:(109,25)错误:类中的构造函数IntentIntegrator IntentIntegrator不能应用于给定的类型;必需:活动 发现:意图原因:实际参数Intent无法转换为 方法调用转换的活动
另外,当我把鼠标放在'(这)'在Android Studio中,它说:
匿名android.view.View.onClickListener
非常感谢任何帮助,谢谢!如果您需要任何其他信息,请告诉我。
答案 0 :(得分:1)
比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();
}
}
}
如果您要实现片段类,请注意在创建getActivity()
时必须致电IntentIntegrator
。
答案 1 :(得分:0)
当您在OnClickListener
内说Fragment
时,您引用的是this
,而不是onClick
。您需要引用Fragment
,最简单的方法是设置一个全局变量,并根据自己的喜好调用它myFragment
,然后分配this
。例如:
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();
}
});
}
答案 2 :(得分:0)
以下可以工作:
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new IntentIntegrator(getActivity()).initiateScan();
popupWindow.dismiss();
}
});