【发布时间】:2019-04-29 22:49:18
【问题描述】:
我正在使用zxing android 扫描二维码。
在 onCreateView 中初始化 HomeFragment 中的扫描对象:
//intializing scan object
//qrScan = new IntentIntegrator(this.getActivity()); // this is for activity
qrScan = IntentIntegrator.forSupportFragment(this); // this is for fragment
要获得扫描结果:
// Get the results:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if(result != null) {
if(result.getContents() == null) {
Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show();
}
} else {
super.onActivityResult(requestCode, resultCode, data);
}
但是,我得到:
错误:HomeFragment 中的 onActivityResult(int,int,Intent) 不能 覆盖片段中的 onActivityResult(int,int,Intent) 试图 分配较弱的访问权限;是公开的
将其从“受保护”更改为公开后,在 HomeFragment 中没有调用 onActivityResult。
【问题讨论】:
-
您是否在托管
Activity中覆盖了onActivityResult()?如果是这样,您是否在那里调用super方法? -
谢谢 Mike M。我错过了在 Activity 中调用 super 方法。能够抓取二维码内容。但是我很难扫描一个简单的二维码(“hello world android”文本),有什么方法可以提高捕获速度吗?我在 AndroidManifest.xml 中添加了 "android:hardwareAccelerated="true"" 但它仍然很慢。
-
抱歉,这是一个单独的问题。我没用过ZXing。我刚刚检查了您关于
Fragment结果问题的问题。 -
谢谢@MikeM。发现是调试器造成的。现在运行顺利