Zxing QR扫描仪onActivityResult未在片段中调用[重复]
Posted
技术标签:
【中文标题】Zxing QR扫描仪onActivityResult未在片段中调用[重复]【英文标题】:Zxing QR scanner onActivityResult not called in fragment [duplicate] 【发布时间】: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。
【问题讨论】:
***.com/questions/20013213/… 您是否在托管Activity
中覆盖了 onActivityResult()
?如果是这样,您是否在那里调用super
方法?
谢谢 Mike M。我错过了在 Activity 中调用 super 方法。能够抓取二维码内容。但是我很难扫描一个简单的二维码(“hello world android”文本),有什么方法可以提高捕获速度吗?我在 AndroidManifest.xml 中添加了 "android:hardwareAccelerated="true"" 但它仍然很慢。
抱歉,这是一个单独的问题。我没用过ZXing。我刚刚检查了您关于Fragment
结果问题的问题。
谢谢@MikeM。发现是调试器造成的。现在运行顺利
【参考方案1】:
试试这个
IntentIntegrator scanIntegrator = IntentIntegrator.forSupportFragment(YourFragmentClass.this);
scanIntegrator.setPrompt("Scan");
scanIntegrator.setBeepEnabled(true);
scanIntegrator.setBarcodeImageEnabled(true);
scanIntegrator.initiateScan();
然后在onActivityResult
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
super.onActivityResult(requestCode, resultCode, data);
IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if (scanningResult != null)
if (scanningResult.getContents() != null)
scanContent = scanningResult.getContents().toString();
scanFormat = scanningResult.getFormatName().toString();
Toast.makeText(getActivity(), scanContent + " type:" + scanFormat, Toast.LENGTH_SHORT).show();
textView.setText(scanContent + " type:" + scanFormat);
else
Toast.makeText(getActivity(), "Nothing scanned", Toast.LENGTH_SHORT).show();
你可以查看thisrepo
【讨论】:
以上是关于Zxing QR扫描仪onActivityResult未在片段中调用[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Zxing QR扫描仪onActivityResult未在片段中调用[重复]
Android 系列 5 7使用Google ZXing条形码扫描器扫描条形码或QR码