列举一些Android中遇到的错误
1、音乐播放完成MediaPlayer的onCompletion没有被调用
原因可能如下:
- 不小心在onErrorListener返回true,根据源码可知返回true的话不调用onCompletion
- 使用单例类管理MediaPlayer的时候,完成播放没有调用该方法
2、ListView 多type类型出现Viewholder转换错误
原因可能如下:
ListView加载不同布局时,需要注意的是,不仅要重写getItemViewType()这个方法,还需要重写getViewTypeCount()方法,因为后者默认返回值为1。你需要多少种类型的item,就在该方法中返回相应整型。
3、在滚动控件中的布局设置shape无效还变透明
原因可能如下:
控制台可能会弹出类似的语句,但是不报错
OpenGLRenderer: Bitmap too large to be uploaded into a texture
这个时候的解决方法可以是将滚动控件中的设置背景shape的那个布局的xml添加一条代码
android:layerType=“software”
该语句是将渲染的硬件加速改成软件加速
4、NestScrollview嵌套RecycleView或者Listview出现焦点争夺
原因可能如下:
会出现的情况可能就是一进来界面的时候,Activity的界面直接显示在RecycleView的第一个Item上。
解决的方式可以在代码中加入这一句
recyclerView.setFocusableInTouchMode(false);
这样外部的NestScrollview滚动控件的焦点就不会被RecycleView抢去了
5、自定义View无法获得ACTION_MOVE和ACTION_UP
解决方法可能如下:
在xml中使用该view 的时候添加一句android:clickable=“true”
6、使用material控件的时候,去背景还出现了阴影(标题栏也可能会出现这个情况)
解决方法可能如下:
在xml中添加app:elevation=“0dp”
7、使用广播在Fragment与Fragment之间进行通信的时候出现莫名其妙的错误
原因可能如下:
你注册了广播但是忘记将广播给取消注册,导致找不到类对象。
8、网络请求生成实体的时候,实体出现空指针异常
原因可能如下:
进行http请求的时候,就算没有数据,它还是会返回一个没有数据的提示。
如果此时返回内容是null,然后你还通过实体去getXXX的话,就会造成空指针异常。
避免的方法是,在取数据的之前进行if判断是否为空
9、SwipeRefreshLayout加载不了
原因可能如下:
SwipeRefreshLayout中的子View开始没有加载Item的话,使用不了
解决方法:第一次进来先加载数据。
10、surfaceview遮挡了其他控件
解决方法可能如下:
view.bringToFront();
surfaceView.setZOrderOnTop(true);
surfaceView.setZOrderMediaOverlay(true);
12、自定义控件不报错但是没有视图
解决方法可能如下:
控件的实例化最好放在除第一个构造函数中