美文网首页
Android 开发所遇问题

Android 开发所遇问题

作者: 终点效应 | 来源:发表于2018-07-25 20:17 被阅读0次

    1. 环境问题

    2018-7-25

    问题:AVD启动不了 —— 报x86需要加速程序错误 —— 在SDK管理器中重新安装这个组件出错 —— 报Hyper-V Hyper-Vx冲突

    解决:win10 —— 控制面板 》程序与功能 》启用或关闭Windows功能 —— 取消选择Hyper-V

    2. AndroidStudio问题

    2020-9-28

    问题:应用崩溃后重启,看不到日志

    解决:在Logcat选择崩溃的包名查看日志,xxx.xxx.xxx 【DEAD】

    2018-9-24

    问题:Kotlin not configed

    解决:项目七转八转,一顿瞎操作,最后把kotlin的版本都弄错了,在项目build.gradle中把kotlin版本改回与gradle相对应版本(会有提示)。

    2018-9-24

    问题:Android Studio 抽风, 不停报错:Stub index points to a file without PSI: com.intellij.openapi.fileTypes ... ... 

    解决:File》Invalidate Cashes / Restart

    2018-7-31

    问题:真机测试时,安装应用失败,卸载了之前版本也没有

    解决:Android studio —— File》Settings》Build》Instant Run —— 取消选择Enable Instant Run ...

    后续(2018.9.21):发现 Instant Run 还是挺有用的,打开此功能,将 app》build》intermediates 文件夹删掉再编译运行,可以用了

    3. 代码问题

    2020-12-16

    问题:RecyclerView的报错 Inconsistency detected. Invalid view holder adapter positionViewHolder

    原因:数据list内容改变后,没有及时通知列表内容变化。要保证先改变list,后通知,并且在同一线程顺序执行。

    2020-12-14

    问题:AlarmManager无法传递PendingIntent中的Parcelable类型Extra。设置了Parcelable的extra之后,不仅这个数据丢失,连同一起设置的其他extra一起丢失。

    原因:网络上的解释是系统如果需要修改Intent时,需要重建intent的extra,而系统没有自定义的类,这个步骤会崩溃,闹钟触发时只会得到空数据。

    解决:Anroid N之前还可能用。之后只能设置基本类型数据,或者将Parcelable转为基本类型传递。

    2020-5-4

    问题: View先从父View中移除再添加,依然报已有父View的错误

    原因:View在从父View中移除时,有Translation动画,还没有真正从父View中移除。看源码好像是低版本的BUG,当前出现问题的系统 Android 7.0

    2020-4-5

    问题:GridLayout 动态添加控件不显示,Android 6.0以上系统测试正常,向下兼容时出现。

    原因:引用的是 android.widget.GridLayout

    解决:添加依赖:implementation"androidx.gridlayout:gridlayout:1.0.0",并引用 androidx.gridlayout.widget.GridLayout。看来android.widget.GridLayout已经被抛弃了。但竟然可以在高版本使用,F**K。

    2019-4-3

    问题:ViewGroup启用LayoutTransition时,动态添加这个ViewGroup自己却有动画

    原因:本以为 LayoutTransition只作用于ViewGroup的子View,但是LayoutTransition类源码runChangeTransition函数显示:如果 mAnimateParentHierarchy 为true,启用ViewGroup的父ViewGroup的动画,作用于当前ViewGroup。

    解决:transition.setAnimateParentHierarchy(false)

    2019-2-13

    问题:RecyclerView 滚动之后 item 点击事件失效,表现为点击两次或过一会儿点击生效

    原因:RecyclerView 嵌套在CoordinatorLayout中产生此问题,RecyclerView 滚动表面上结束了,内容还处于Fling状态,不能响应点击。RecyclerView 28.0.0 版本在修复旧版本问题的时候引入此新 BUG。

    解决:禁止直接嵌套。

    2018-9-18

    问题:自定义TextView初始化时 SingleLine 属性与 Gravity.Center 混用,导致不绘制

    解决:这是TextView的一个Bug,没办法,估计Google也不会注意到这个问题上来。

    2018-8-10

    问题:自定义属性 obtainStyledAttributes 死活找不到 R.styleable.xxx 但是能找到 R.styleable.xxx_xxx

    解决:错误提示垃圾了,其实是 attrs.xml 出现了问题。我的问题:

    1、有重复 attr 属性名称,将重复的属性名称移动到 declare-styleable 外面,引用时只包含名称。

    2、attr 名称有一个是 “new” 系统不接受,也不提示错误 f*******k 

    2018-8-2

    问题: ViewPager使用,PagerAdapter.notifyDataSetChanged()不更新数据。

    过程:网上回答比较多的是 getItemPosition return POSITION_NONE,还有其他使用 FragmentPagerAdapter,FragmentStatePagerAdapter的,复写了其他方法的,统统尝试了在我的工况下没有效果。

    结果:stackoverflow 上这个问题持续问了六年,不断有人回答,讨论,结果仍然不够明朗。

    解决:其实只需要给 ViewPager 重新设置一次更新数据了的 PagerAdapter 即可。这并没有损失多少性能,重新设置 adpater 与 return POSITION_NONE 是一个原理,重新生成了2~3个View而已。

    2018-7-31

    问题:java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.ViewGroup.transformMatrixToGlobal(android.graphics.Matrix)' on a null object reference

    工况:Activity A 中的 RecyclerView 中的 item 与 Activity B 中的一个View共享,使用共享元素动画在二者间跳转, 为了动画更柔和没有闪烁,从 B 返回 A 时先通过 BroadcastReceiver 把数据返回来, 更新了 A 中 item,使用了 RecyclerView 的 notifyItemChanged(position:Int),共享元素动画结束时报错。

    原因:经测试,不同系统版本,不同 RecyclerView 版本(27.1.1 与 26.1.0)表现不一样,以上问题发生在使用 notifyItemChanged(position:int) 会重新调用 onCreateViewHolder 即使 Item 还在可视区,这个调用导致共享元素发生变化,不再是同一个View,从而使 B 返回 A 时的动画找不到原来的 View 报错。

    解决:改调用 notifyItemChaned(position: Int, payload: Object),payload 传 0 即可。

    相关文章

      网友评论

          本文标题:Android 开发所遇问题

          本文链接:https://www.haomeiwen.com/subject/lsbjpftx.html