android Zxing在fragment中使用
来源:互联网 发布:淘宝日系男装店铺 编辑:程序博客网 时间:2024/06/03 10:04
今天公司有需求,有个扫描二维码的需求,刚开始以为很简单,就直接开始干,添加zxing依赖:
compile 'com.journeyapps:zxing-android-embedded:3.5.0'compile 'com.google.zxing:core:3.3.0'
然后就是干:
IntentIntegrator integrator = new IntentIntegrator(mCtx);// 设置要扫描的条码类型,ONE_D_CODE_TYPES:一维码,QR_CODE_TYPES-二维码integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES);integrator.setCaptureActivity(ScanActivity.class);integrator.setPrompt("将二维码放到框内即可"); //底部的提示文字,设为""可以置空integrator.setCameraId(0); //前置或者后置摄像头integrator.setBeepEnabled(true); //扫描成功的「哔哔」声,默认开启integrator.setBarcodeImageEnabled(true);integrator.initiateScan();
@Overridepublic void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode==AppConstants.PARK_NUM_QR_CODE){ if (data!=null){ parknum = data.getStringExtra("parkNum"); } }else{ LogUtils.e("什么鬼","扫描结果daowo le e "); IntentResult intentResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); LogUtils.e("什么鬼","扫描结果"+intentResult); if (intentResult!=null){ if (intentResult.getContents()==null){ ToastUtils.showShortToast("扫码取消"); }else { ToastUtils.showShortToast(intentResult.getContents()+"扫描成功"); } } }}
在onactivityresult中接收扫描结果,但是问题出现了,可以到扫描界面,但是扫描结果死活不出来,没有toast...
然后打断点,发现在扫描完之后,没有到onactivityresult方法中来...百思不得其解,然后一顿搜索,在以为大哥的博客中发现一句:IntentIntegrator有两个方法是forFragment和forSupportFragment应该是用于支持Fragment和支持库版本的Fragment,然后想到我是用viewpager+tablayout+fragment的,并且在fragment中使用zxing....
就想试一试会不会是zxing在fragment中不是这样调用的,然后点击进去果然发现zxing中有这个方法:
/** * @param fragment {@link Fragment} invoking the integration. * {@link #startActivityForResult(Intent, int)} will be called on the {@link Fragment} instead * of an {@link Activity} */public static IntentIntegrator forSupportFragment(android.support.v4.app.Fragment fragment) { IntentIntegrator integrator = new IntentIntegrator(fragment.getActivity()); integrator.supportFragment = fragment; return integrator;}
于是,就把以前的代码改为:
// IntentIntegrator integrator = new IntentIntegrator(mCtx); IntentIntegrator integrator = IntentIntegrator.forSupportFragment(this); // 设置要扫描的条码类型,ONE_D_CODE_TYPES:一维码,QR_CODE_TYPES-二维码 integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES); integrator.setCaptureActivity(ScanActivity.class); integrator.setPrompt("将二维码放到框内即可"); //底部的提示文字,设为""可以置空 integrator.setCameraId(0); //前置或者后置摄像头 integrator.setBeepEnabled(true); //扫描成功的「哔哔」声,默认开启 integrator.setBarcodeImageEnabled(true); integrator.initiateScan();
其他的不变,运行...果然,扫描结果就toast出来了...
也没费多大功夫,哈哈,记录一下,作为心得....
阅读全文
3 0
- android Zxing在fragment中使用
- Zxing 在Fragment中实现二维码扫描(不推荐使用)
- 在Android中使用 Google ZXing 实现二维码、条形码扫描
- 在Android中使用 Google ZXing 实现二维码、条形码扫描
- Android中ZXing简单使用
- 【android】在fragment中使用option menu
- Android在Fragment中使用Tab
- android---在Fragment中使用Toolbar
- 在Android Studio中集成Zxing
- 在Android Studio中集成Zxing
- 在iOS中使用ZXing库
- 如何在iOS中使用ZXing库
- 在iOS中使用ZXing库
- 在iOS中使用ZXing库
- 在iOS中使用ZXing库
- 在iOS中使用ZXing库
- 如何在iOS中使用ZXing库
- 如何在iOS中使用ZXing库
- 跨域问题解决
- 解决recyclerview 在 scrollview 中不能全部显示,高度不正常的问题
- shell脚本调试
- Java和C#下String类型中的==和equals的原理与区别
- Android笔试和面试常见题目(四)
- android Zxing在fragment中使用
- AMQP 协议详解
- 关于获取QTableWidget item文本和判断item是否为空
- python Tkinter基础
- Python基础知识简述(个人笔记)
- 什么才是8K,8K的参数,8K应用,8K介绍、8K测试交流
- 使用Maven archetype-webapp创建web项目
- 免安装Oracle客户端使用免安装Oracle客户端使用PLSQL Developer 8.0.3.1510 连接Oracle10g或11g
- 封装、继承、多态。