
Android开发Bug日志
&岁月不待人&
每一个优秀的人,都有一段沉默的时光,那段时光是付出了很多努力的,却得不到结果的日子,我们把它叫做扎根。
展开
-
Bug记录-Viewpager2的Fragment生命周期同步问题
此Bug可能不符合其他需求哦,仅限个人总结;界面描述:MainActivity用tablayout+viewpager2实现了首页五个Fragment横向切换,然后在第四个FourthFragment里,实现了Viewpager2的类似于画廊的多个ChatFragment纵向切换。原创 2025-03-14 14:27:22 · 428 阅读 · 0 评论 -
Viewpager和RecycleView的滑动冲突
Bug表现:我在滑动recycleview列表时,有时候会导致viewpager滑动了,也有可能只会滑动viewpager,列表不能响应手势,切换到了下一个界面我的布局:我的布局相对恶心,是A fragment里有一个viewpager2,viewpager2的每一个子项是B fragment,每个B fragment里都有一个列表。他两都是纵向滑动。期望表现:当我手指在列表区域进行操作时,不希望viewpager有任何滑动上的响应。问题原因:滑动冲突,事件的响应有时候在列表有时候在原创 2025-03-13 17:41:41 · 445 阅读 · 0 评论 -
Android LiveData 数据倒灌
另一方面,LiveData 本身被设计为粘性事件,也即,一旦 LiveData 持有数据,那么在观察者订阅该 LiveData 时,会被推送最后一次数据。一方面,用于通信的 LiveData 是被托管在 Activity / Application 级作用域 SharedViewModel 中,于是。相关类型的文章很多,这里只做个人总结和其余的方法推荐。(假设通信双方是 Fragment)原创 2024-09-24 10:52:40 · 776 阅读 · 0 评论 -
Android 点击其他组件让输入框失去焦点
在用户填写基本信息的界面里,在输入框唤起键盘后,有时候又会弹起选择框(PickerViewDialog),如果用户在没有关闭键盘的情况下,点击PickerView,此时的焦点仍然在上个输入框,此时。之前想的是,在点击选择框时,让输入框失去焦点,但是有多个选择框和输入框的情况下,这样代码就太冗余了。于是就想到了,在dispatchTouchEvent里进行事件处理。4.这样就实现了点击屏幕上就失去焦点的功能。原创 2024-09-24 09:57:03 · 467 阅读 · 0 评论 -
RadioGroup和Viewpager中onCheckedChanged和onPageSelected 循环调用多次问题
其实在写这个代码的时候我就想过,再选中某个页面的时候,去设置对应的radiobutton的状态的时候,回调了onCheckedChanged,又在这里面设置viewpager的currentItem,设置了currentItem就会回调onPageSelected,岂不是无限循环。但是现在因为切换指定页面的时候,需要请求接口来刷新页面,然后今天在自测的时候,发现同一个接口会疯狂请求好几个!看那三个方法里面的代码,在满足条件的情况下,会有三次onCheckedChanged的回调,所有是这儿出了问题。原创 2024-09-20 20:31:35 · 544 阅读 · 0 评论 -
AndroidX 库和旧的 Android 支持库 (android.support) 之间的冲突 in multiple modules and/or libraries.....
我们平时使用一些三方库,一般都是直接在build.gradle直接引用,然后自己调用人家的API就行了,但仔细想想,我们还可以使用AAR依赖和module依赖。这是我常用的一个方法,因为之前Glide有个版本的库比较老,但是里面有个图片处理的功能,我经常用到,就会使用下面的方法把support库给干掉。我们在做日常的项目开发时经常会需要对接三方SDK或者使用一些三方依赖库已完成项目的需求,但是有时候会在拉入依赖库后报错库文件冲突。如果不能完全迁移到 AndroidX 或者你的项目中有第三方库依赖旧的。原创 2024-08-29 10:12:20 · 888 阅读 · 0 评论 -
Unable to make field private final java.lang.String java.io.File.path accessible: module java.base
方法二:在项目的gradle.properties文件,在org.gradle.jvmargs配置进行修改,最近老是遇到这个问题,因为需求经常变动,所以经常会去看三方库的Demo,但是build的时候老是爆这个错。原因:其实就是java版本过高,三方库的版本一般较低,所以你的把版本降低一下。降低项目的java版本,选个1.8就行了,之前默认是jbr_17。原创 2023-10-12 11:40:50 · 11978 阅读 · 5 评论 -
Android存储权限完美适配(Android11及以上适配)
Android 11 里将引入一个特别的权限叫做 MANAGE_EXTERNAL_STORAGE,该权限将授权读写所有共享存储内容,这也将同时包含非媒体类型的文件。(至于我的小米为啥Android 13也能正常拉起,我也不知道具体原因,但是在Android Studio的历史链接设备中,我发现它识别我的手机系统为Android 12,真是百思不得其解)因为有时候用户会拒绝权限且永久弹窗,所以为了方便我就用了EasyPermission这个库,拒绝的情况下,弹窗跳转系统权限设置页面去让用户选择开启权限。原创 2023-09-18 21:30:20 · 14970 阅读 · 0 评论 -
org.litepal.exceptions.DatabaseGenerateException: can not find a class named org.litepal.model.Table
在使用litepal的时候,报错org.litepal.exceptions.DatabaseGenerateException: can not find a class named org.litepal.model.Table。proguard-rules.pro(绿色箭头指向的)原创 2023-05-15 15:25:03 · 416 阅读 · 0 评论 -
报错:java.util.ConcurrentModificationException 线程不安全
通俗的理解是当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy,复制出一个新的容器,然后新的容器里添加元素,添加完元素之后,再将原容器的引用指向新的容器。今天在做项目时,遇到个bug,需求是app在特定的时候把广告缓存下来,合适的位置在展示,于是想的用hashmap列表存起来,key为位置的广告类型,value为广告对象。就是你的modCount改变了,但是还在迭代,导致。去官方文档查询,我这个应该是线程不安全导致的,想来也是,静态变量全局调用,本就不是线程安全的。原创 2023-03-04 15:11:12 · 1408 阅读 · 0 评论 -
ADMob 原生广告展示不完全,mediaView无图片数据
在接入原生广告时,比如在splash 请求一个原生广告,然后缓存起来,跳转带首页展示一个原生广告,结果遇到了广告展示不完全的问题(有文案,title,appIcon,点击按钮,如果不缓存直接请求展示则没有问题),可以进行点击跳转,但是却没有广告大图,改了好一会儿,终于解决了这个问题。原创 2023-03-03 11:31:44 · 583 阅读 · 0 评论 -
Android lottie java.lang.IllegalStateException: Missing values for keyframe
Android lottie java.lang.IllegalStateException: Missing values for keyframe版本升级就可以解决!原创 2023-02-21 19:48:43 · 492 阅读 · 0 评论 -
Android Git 拉取代码报错:error: cannot pull with rebase: Your index contains uncommitted changes.
在使用Android Studio中Git的Commit Directory 将本地更改的代码保存到本地后,点击commit,发现提交不上去,发现本地有代码,这时候拉取代码,报错:cannot pull with rebase: Your index contains uncommitted changes.表示我的索引有未提交的改变原创 2022-09-14 00:03:21 · 3801 阅读 · 0 评论 -
Android Navigation获取栈顶Fragment
需求是需要判断当前栈顶的Fragment的是不是指定Fragment,如果是就不通知此条消息,那么就需要获取当前正在展示的Fragment,即栈顶的Fragment,以往获取栈顶的Activity很简单,这个还把我考住了。原创 2022-07-14 16:08:34 · 3641 阅读 · 2 评论 -
Android 防止点击下层页面的控件
1、Bug:由于项目使用的是单Activity,由navigation进行跳转逻辑,所以,会使用到大量的fragment,由A跳转到B,在B页面进行键盘的收起展开后,点击页面的部分位置会点击到下层的控件,这样肯定是不行的,百度了也没啥结果,于是参考了大佬的其他页面的布局属性。于是便发现了android:clickable这个属性。该标签(继承自View的xml属性)的值必须是boolean值,即true、false。该标签目的是设置控件是否可以被点击。但是如果你在这儿设置为false,再去代码里面添加点击事原创 2022-07-11 11:58:38 · 1181 阅读 · 3 评论 -
Android:解析Json异常 Expected a string but was BEGIN_OBJECT at
今天解析后端数据时,发现了这个报错:Expected BEGIN_OBJECT but was STRING at看来是自己哪儿解析错误了。因为数据的特殊性,后端返回的Json串里面可能还会有Json数据,可能嵌套了三次层,例如:{"info":{"clientMsgId":"ebc5018f-b2bd-4c87-a662-5bcf11dd3843","content":"{\"inviteId\":159,\"meetingInfo\":{\"ownerAvatar\":\"https://cdn.dev原创 2022-07-02 18:43:06 · 2853 阅读 · 0 评论 -
Android Studio Git消失了(Bug记录)
打开项目后,拉代码发现个冲突,需要回滚,操作后Git菜单栏和下面的git一同消失了解决办法:Android Studio的问题,重启就好了原创 2022-06-06 14:07:10 · 1176 阅读 · 0 评论 -
The application could not be installed: INSTALL_FAILED_TEST_ONLY. Android App包安装失败(Bug记录)
昨天测试过来说她手机运行不了新包,我自己的手机都可以,于是就用数据线连接给她安装一个,结果还是安装失败,报了个错The application could not be installed: INSTALL_FAILED_TEST_ONLY前辈走了过来,打开了项目里的gradle.properties文件添加:android.injected.testOnly=false再次安装就正常了...原创 2022-04-20 10:28:50 · 2098 阅读 · 0 评论 -
Android git LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443
今天push代码就一直push failed,后面去看报错代码,LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443查了下,网上说是网络代理的问题。解决办法 :先输入git config --global --list查看是否有然后查看是否设置了[http]和[https]选项和proxy的,有的话就输入$ git config --global --unset http.proxy$ g.原创 2021-11-15 14:29:39 · 1460 阅读 · 0 评论 -
Glide 图片圆角失效问题
1.应用场景在当下主流的App中,拿到图片资源时都会做一些处理,过度动画等等再展现给用户,很多时候见到的图片都是圆角的,给用户的视觉体验更好,在图片处理方面,经常会用到Glide框架,所以,圆角自然也可借此实现2.问题今天在项目中,在对几处图片控件进行处理时,发现其中一个控件的圆角失效了,对比之后发现应该是imageView的scaleType属性导致其圆角失效,在经过测试和网上的查询过后发现在对ImageView不做任何的ScaleType属性处理时,其圆角是正常展示的,但是在我们开发时,原创 2021-09-15 22:28:39 · 5155 阅读 · 2 评论 -
Android Studio 的右侧Gradle为空
问题:自己写的库需要传到maven库,结果需要在右侧gradle进行操作时,发现里面毛都没有。解决方法:一、以往在出现此问题时,我是直接sync一下就行了结果今天并没有成功,emmmm,肯定是换了电脑,以前的设置没了,于是。。。。二、于是进入Preference/ Settings把这儿的勾勾去掉就行了,然后apply ,然后再sync一下就行了三、运行后该有的都有了,自行操作吧...原创 2021-09-14 20:16:12 · 1420 阅读 · 0 评论 -
RecyclerView.getChildAt()崩溃,空指针异常(bug12)
项目需要在每一个列表Item加一个长按弹窗功能,那么使用popwindow时,需要传入每一个item的view,让弹窗显示在其上面,那么就会习惯性的想到用RecyclerView.getChildAt(position)方法,运行后,点击界面后确实弹窗了,但是往下拉,继续点击item时,崩溃了,显示空指针异常,明明数据都填充了,item不可能为空啊。原来getChildAt()只能获取到最开始屏幕上显示的item的view,后面的就获取不到了,所以该用其他方法:View itemView = re原创 2021-08-24 20:40:22 · 668 阅读 · 0 评论 -
TextView.setTextColor()无效问题(bug11)
平时在xml布局给TextView控件设置textColor时,直接使用colors里设置的值即可正常展示,今天在代码里动态设置时发现无效,于是便把:textView.setTextColor(R.color.white))改成textView.setTextColor(context.resources.getColor(R.color.white))就可以了...原创 2021-08-24 20:29:09 · 1177 阅读 · 0 评论 -
关于友盟初始化优化问题
前段时间因为整改原因,友盟SDK也推出了冷启动,不过其文档有时候看起来有点绕,导致App重新上架依旧被测出用户未同意隐私政策获取用户信息。于是倒腾了一下,得出以下最终的版本:1.每次App启动时,在Application的onCreate中冷启动:(冷启动不会收集任何信息)2.然后在SplashActivity(也就是第一个进入的页面),在用户同意隐私政策权限后,进行友盟初始化。仅做个人记录,方便以后其他App功能同步...原创 2021-07-08 10:45:41 · 1136 阅读 · 1 评论 -
EditText无光标(bug10)
问题:有用户反馈在使用公司App的日记本功能时,编辑文本的地方没有光标,写到哪儿了都不知道。我查看我的可输入文本的控件,发现TextView居然都有,EditText的文本栏没有,于是就去查了控件相关用法。解决办法:1、在Edittext中加入以下属性android:cursorVisible="true"android:textCursorDrawable="@null"2、在Edittext中加入以下属性android:cursorVisible="true"andr原创 2021-02-25 12:04:29 · 243 阅读 · 0 评论 -
java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState(已解决)
最近在做提交任务功能,成功提交后点击弹窗返回原来的界面时,程序崩溃了,于是便看了下日志,报错java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState 字面意思:在onSaveInstanceState之后无法执行此操作于是慢慢定位到错误的地方,最外层是表示在我的回调函数里dialog的展示有问题,看不出个啥,于是往最里层看,就到了这里看到这里,大概也知道啥原因了,...原创 2021-02-02 14:58:03 · 2384 阅读 · 1 评论 -
Multiple substitutions specified in non-positional format; did you mean to add BUG(7)
报错现象:strings文件报错了,编译失败原因:字符串中有%的原因相关提示:Multiple substitutions specified in non-positional format; did you mean to add the formatted=”false查看其余项目发现并无此问题,经过百度,发现以下解决办法:建议第一种,毕竟报错提示里是这样建议的 1.加上formatted="false"<string name="time_picker" f...原创 2021-01-08 14:00:32 · 238 阅读 · 0 评论 -
Android oppo手机显示安装包异常(Bug6)
最近在安装自己写的demo时,华为手机没啥问题,用OPPO安装时居然显示安装包异常,还以为是自己代码有问题。解决办法;在自己的Android项目里找到gradle.properties,在该文件的末尾处添加代码android.injected.testOnly=false同步一下就可以了...原创 2020-12-01 19:08:56 · 6916 阅读 · 1 评论 -
Timeout waiting to lock daemon addresses registry. Android Build失败(Bug5)
最近在编译项目时遇到以下报错Timeout waiting to lock daemon addresses registry. It is currently in use by another Gradle instance.Owner PID: 6992Our PID: 3472Owner Operation:Our operation:Lock file: C:\Users\XYSM\.gradle\daemon\5.6.4\registry.bin.lock翻译过来就是:等..原创 2020-11-23 14:05:30 · 533 阅读 · 0 评论 -
a.gray.PiggyGoldcoin.a病毒(已解决)
一、问题描述最近公司突然收到应用宝,OPPO和VIVO的应用下架通知,通知我们的俩款App疑似金融类诈骗软件,已下架。点进去查看是 平台例行扫描应用再次推送病毒结果,自动下架~当时全项目组都很蒙蔽,一个运动类App居然被查出是金融类诈骗病毒。后面不信邪有上传了一次,结果还是说是病毒软件,为了防止多次上传被拉黑名单,于是我们先打算自行测试一下。第一个,各大测试平台,VIVO用的是腾讯,安天和360扫描,于是被得到了以下结果测试了几次,发现都是腾讯手机管家测出来的,...原创 2020-11-19 20:01:05 · 81917 阅读 · 45 评论 -
Bug日志(四)——Android 防止多次点击(另解决多个列表子项点击)
在用户使用 应用的时候,经常会出现点击过快且多次点击同一控件的情况,一方面这是因为应用或手机当前有些卡顿,网络卡啥的另一方面也可能是由于很多应用并没有设置按钮点击时的 selector 或者其它按钮响应方式(例如点击按钮时按钮放大,常见于游戏),导致用户误认为没有点击到当前按钮。(比如使用selector再点击后更换背景颜色,图片等等)一.防止按钮多次点击1.工具类:一般按钮的防止多次点击我使用的是自己封装的工具类;public class AntiShakeUtils { .原创 2020-11-16 16:30:25 · 475 阅读 · 0 评论 -
视图 总结 基础
控件NestedScrollView嵌套滑动和分发机制 https://www.jianshu.com/p/1806ed9737f6 TwinklingRefreshLayout 下拉刷新上拉加载 recyclerView 自定义视图 (项目view包) AddAnimationTextView DragViewTaskRelease BarPercentView CustomProgressBar MyProg...原创 2020-11-03 09:58:00 · 146 阅读 · 0 评论 -
Bug日志(二)-Android网路请求图片地址图片不显示
做项目时,需要实现图片展示功能,不可能把一堆图片写到本地,那样不易维护而且包体会很大。只需要图片地址就行了,然鹅,在代码没问题的情况下,发现我随意找个百度图片的地址都能加载,自己家的图片不显示:发现俩个图片的地址区别是:http和https,估计是不安全链接被限制了,果然一查,开发者文档https://developer.android.google.cn/training/articles/security-config.html是的,只需要在在 AndroidManifest.xm.原创 2020-09-28 14:17:01 · 370 阅读 · 0 评论 -
Bug日志(三)-获取本地图片后上传失败
在开发过程中,要实现意见反馈的图片选择上传功能,进入相册选择后可以看到自己选择了什么图片,然而在获取到下列三个权限后,android.permission.READ_EXTERNAL_STORAGE android.permission.WRITE_EXTERNAL_STORAGE android.permission.CAMERA选择图片后返回上传图片失败,查看Log,已经获取图片信息,但是上传失败:HTTP FAILED: java.io.FileNotFoundException:原创 2020-09-28 13:58:41 · 513 阅读 · 0 评论 -
Bug日志(一):RecyclerView只显示第一行
最近在做新App开发时,使用RecycleView控件Gridlayout分三列展示信息,却遇到了只显示一行数据的Bug,代码如下:mBinding.recyclerViewLabel.setLayoutManager(new GridLayoutManager(getActivity,3));列表子项item.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://sc原创 2020-09-10 15:55:08 · 528 阅读 · 0 评论