UI突然就不能在IDE预览了,无论是Eclipse还是Android Studio,提示NullPointerException,找来找去找不到原因,网上也搜索不到答案,后来调了好久才知道是这个东西搞的鬼:
android:icon="@drawable/ic_launcher"
这是在AndroidManifest.xml中设置的,ic_launcher是程序创建时的默认图标,在文件夹可以看到是png格式,我换成自己的logo,ico格式,没提示报错,运行也正常!!以至于我一直忽略了这个,到后来发现项目布局无法预览时,愣是找不到原因,看日志提示(部分):
java.lang.NullPointerException
at android.graphics.Bitmap_Delegate.createBitmap(Bitmap_Delegate.java:599)
at android.graphics.Bitmap_Delegate.createBitmap(Bitmap_Delegate.java:120)
at android.graphics.Bitmap_Delegate.createBitmap(Bitmap_Delegate.java:102)
at com.android.layoutlib.bridge.impl.ResourceHelper.getDrawable(ResourceHelper.java:236)
at com.android.layoutlib.bridge.bars.ActionBarLayout.getDrawable(ActionBarLayout.java:222)
at com.android.layoutlib.bridge.bars.ActionBarLayout.setupActionBar(ActionBarLayout.java:160)
没提示哪个包,哪个文件,根本无从入手,但从Bitmap,ActionBar这个关键字,我不停地删除与图像相关的内容,最后才发现是这个,不容易啊!!!
根据个人总结(暂时没找原理,仅供参考),android:icon建议不要用ico格式,它不会报错——无论模拟器还是真机,但是却会导致无法预览(用在Application就全部不能,用在Activity就Activity不能),如果想用ico格式,android提供另外一个参数:
android:logo="@drawable/logo2"
但是这个参数只会在界面显示有效,而不会变成程序的安装图标,如果想实现程序的安装图标,又想UI能在IDE预览,有二种方法:
方法一:使用android:icon="png格式图标",不知道除ico、png格式外的支持不,没试。
方法二:想支持ico,Application设置android:logo="ico格式图标",启动的Actiivity设置android:icon="ico格式图标"(这会导致该acitivity无法预览)
当然第二种方法就会衍生出:
Application设置android:logo="ico格式图标",启动的Actiivity设置android:icon="png格式图标",但是这样就有点多余了,不及第一种方法来得方便。