您的位置:首页 > 其它

改bug总结—2015年11月于nice实习

2016-02-19 16:25 393 查看
继续总结我遇到的bug君们~~

1.App的启动页可使用Activity的theme属性来设置,这样主界面未加载完成时就显示theme,加载完成后在Activity的onCreate函数中再设置setTheme(null)来销毁这个启动页,加载正常界面即可。比单独写一个Activity来展示启动页开销小,效率高。

AndroidManifest中代码如下:

<activity
android:name=".activities.MainActivity_"
android:configChanges="locale|layoutDirection"
android:launchMode="singleTop"
android:screenOrientation="portrait"
android:theme="@style/MainActivityTheme"//设置启动页
android:windowSoftInputMode="stateAlwaysHidden|adjustNothing">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>


参考:
http://blog.chengyunfeng.com/?p=741 http://www.codeceo.com/article/android-app-theme-style.html
2.使用layer_list处理图片的层叠效果。layer_list中的item可以设置不同属性,可以将drawable或bitmap来设置图片,使用bitmap时可以保证原有图片之间的相对大小关系。

参考:
http://keeganlee.me/post/android/20150909 http://blog.csdn.net/pcaxb/article/details/47781547
3.新消息的提示数字不能阅后即焚,单独设计一个类NoticeNum来存储和更新各种提示的阅过状态,显示与否就依此判断。

4.做通讯录的更新,需要得到现有通讯录对应原通讯录的增删数据集,就是两个集合的子交并补运算,而List有现成的方法,所以联系人数据便采用List存储。有一点注意,List的内部元素若是对象,一定要复写equals和hashcode方法,明确两个对象何时才认为是相同的。

5.使用anonotation注解开发,报了200个错,再没有其他有用信息,当时原因是:子类fragment中使用@fragmentArg定义了与父fragment中同名的参数。

(当时解这个bug,用了一天。。。)

6.Android Studio上恢复误删文件的方法:右键点击工程—>local history —>show history 即可找回文件。

7.做密码输入的隐显控制,先在xml中设置EditText的inputType=“password”,然后代码中使用EditText的setTransformationMethod方法来控制密码显示,这时遇到的问题是:设置了inputType后,EditText的hint显示受到影响,英文由半角显示变成了全角显示,中文正常。解决办法是:代码中设置editText.setTypeface(Typeface.SANS_SERIF),而且只能代码中设置,xml中无效。同样,xml中设置password=“true”时也会如此,办法同上。

8.遇到了一个诡异的bug:acy启动时执行的方法进不去了,调试时给的信息是:

no such instance field : ‘XXX’。但是这个变量是存在且有值的,google的结果是说重启AndroidStudio就好,是AndroidStudio引用了之前版本的文件,不是代码的问题,然后好了。

参考:
http://stackoverflow.com/questions/28646999/no-such-instance-field
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: