Q1 Application context 出现空指针####
Application 中 instance获取时不能使用new Application() 这种方式,否则没有上下文
,需要在onCreate中直接用instance = this 来初始化
Q2 ProgressDialog dismiss不起作用
错误写法
ProgressDialog dialog = new ProgressDialog(this);
dialog.show(this,"title","message");
dialog.dismiss();
这样写会导致dialog不消失,因为dialog.show(this,"title","msg")会生成新的dialog
正确写法
dialog.setTitle("title");
dialog.setMessage("message");
dialog.show();
Q3 下载android framework源码
Q4 android.view.WindowLeaked
android 中Dialog 跟Activity生命周期并不是同步的,在销毁一个Activity时,若dialog 还在 show()时,就会导致窗体泄漏。
解决办法是在finish activity前检查dialog
if( mDialog != null && mDialog.isShowing()){ mDialog.dismiss(); }
Q5 receiver 无法实例化
写demo的时候碰到了一个Unable to instantiate receiver java.lang.InstantiationException错误导致无法实例化receiver的错误
发现该receiver是写在service类里面的一个内部类,然后在manifest文件中静态注册的。所以导致了无法实例化。
解决方案是:将该receiver独立出来,形成单个文件,不要以内部类的方式定义
Q6 android selector 背景色切换不起作用
原因:没有将默认颜色北京写到最末尾
解决方案: 将点击时的状态写到selector靠前位置,默认颜色则放到最后
<?xml version="1.0" encoding="utf-8"?>
<selector
<item android:drawable="@color/custom_bg"android:state_pressed="true"/>
<item android:drawable="@color/white"/>
</selector>