您的位置:首页 > 移动开发 > Android开发

我在Android开发中遇到的问题

2016-11-15 21:54 134 查看
前段时间开始实习了,在工作中遇到了很多问题,因为没有老司机带路,

基本上到处踩坑,遇到了很多问题,有时间的话再在这里更新。

1.ListView的ViewHolder导致的数据混乱(其实是自己垃圾 = =)

问题描述:

ListView的Item有关注、点赞按钮。在获取数据初始化后,滑动ListView将Item移出屏幕,再返回之前被移出的关注、点赞按钮状态都一致变为了已关注与已点赞。

问题原因:

ListView的Adapter中使用ViewHolder使得View模板复用

ListView滑动会调用getView方法,对应赋值

关注与点赞按钮只写了已关注或已点赞的逻辑判断,没有反面情况的赋值处理

解决办法:补上发面情况的赋值处理

综上所述:导致了状态不能复位以致数据错乱。

2.事件拦截或处理返回导致的点击无效或不能触发问题

问题描述:

RelativeLayout设置点击事件无效,断点调试发现没有触发OnClick事件

问题原因:

RelativeLayout中的Item包含有获取焦点控件,例如:Button

没有将事件处理返回给RelativeLayout

解决方法:将Button的clickable设为false

Tips:遇到控件点击无反应,试着向事件拦截与处理返回方面想一想,有时候会有特别的收获。在开发过程中好像发现AbsListView的子类的事件处理方法好像都默认返回true,不会将事件处理丢给父类,这也导致过类似的问题。

3.RecyclerView的刷新问题

问题描述:

在项目中使用了RecyclerView然后调用了notiftDataSetChange()方法,然后发现数据没有更新。

问题原因:

我的RecyclerView是ListView的Item中的一部分,所以在这个时候,单独刷新RecyclerView是没用的,刷新完之后调用ListView的notiftDataSetChange()问题得到解决。

常规原因:Adapter中的数据源与实际更新的数据源引用的不是同一个数据。建议可以在Adapter中写一个update方法,在update方法中data.clear中的数据源,然后data.addAll(datas)。(data为Adapter中的数据源,datas为传递进来的数据)。

2016年11月15日21:53:01更新

4.在Receiver中startActivity报错

原因:在谷歌的 Android API Guides 中,特意提醒开发者不要在后台启动 activity,包括在 Service 和 BroadcastReceiver 中,这样的设计是为了避免在用户毫不知情的情况下突然中断用户正在进行的工作。百度上好像说Activity中重写了startActivity,其他的没有….

解决方法:给Intent设置setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

5.Activity之间传递Bitmap

6.EditText点击,弹出的软键盘覆盖EditText下方小部分布局

2016年11月17日
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: