改bug总结—2016年2月于nice实习

来源:互联网 发布:java图形界面时间控件 编辑:程序博客网 时间:2024/04/30 08:27

总述

实习马上就要结束了,该回校毕设去了,这是实习期的最后一篇了


1.Annotation出错,几乎每次都报几百个错,总结遇到的原因如下:

忘记注解标记: EActivity,EViewGroup等,log中没有提示的。
用错注解标记:Activity中传参用Extra,Fragment传参用FragmentArg 。
xml布局中id更改,代码中@ViewById 对应不上。
变量及方法声明时用错修饰符:要用public or protected,不能用private,这是因为使用到注解的地方要保证子类可继承。

2.PopupWindow的使用问题。首先是crash的bug:使用PopupWindow的showAsDropDown方法做相对显示,其中带gravity参数的实现要求API>=19,所以有些低系统的机型会直接crash,换用没有gravity参数的实现即可,这是在API=1就添加了的。然后是弹窗不显示的bug:是相对起始点记错了,作为参考View的左下角被视为待显示View的左上原点。

3.获取屏幕物理宽度。要根据屏幕物理宽度动态设置子View的宽度,因为子View处于HorizonalScollView中,所以只有在onCreate方法中调用getWindowManager().getDefaultDisplay()才能获取准确值,当然,此时得设置app支持多种分辨率。
参考:
http://zhidao.baidu.com/link?url=ETjrmevAcF2jdu7QUj4Usf0wz3xMUcZNagxkaudBYnZIkp3DU95okTIkUTCcsbnFoixbXQeSdGIgqS3asn4H1Vmzor9znF_zlhCwdktQcRq
http://blog.csdn.net/lincyang/article/details/42679589

4.遇到一个序列化的bug,提示如下:

android.os.BadParcelableException: ClassNotFoundException when unmarshalling:XXXXX

原因是:序列化与反序列化的顺序应是一致的,要是顺序不一致,解析就失败。也就是说,writeToParcel方法中字段的写顺序与从Parcel中字段的读顺序一致。

6.使用Fresco的SinpleDraweeView控件,倒圆角时得使用控件的原生属性,即:fresco:roundedCornerRadius=“2dp”,要记得导自定义属性库。此时使用background属性加载一个shape型的xml文件这种常规做法是无效的。





0 0