列举一些Android中遇到的错误

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_41386438/article/details/102732186
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、自定义控件不报错但是没有视图

解决方法可能如下:

控件的实例化最好放在除第一个构造函数中

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41386438/article/details/102732186