今天寫程序發現一個問題,就是XML中報出android.view.InflateException異常,可能的原因有:
1.XML中使用到得組件名稱是否書寫正確(包名+類名),可以使用crtl+鼠標點擊看能不能跳轉到該組件的定義的地方,可以的話就不是這個問題,如果不可以的話,就是這個問題
2.拋出異常時的main.xml與自定義View類相關代碼如下:就是自定義的組件中的構造方法有沒有書寫正確
main.xml
繼承View的類Chessboard.java:
對於此異常,如下進行修改:添加View類的另一個構造方法
3.這個問題很是蛋疼,也是我遇到的問題,搞了我一天的時間,就是工程的編碼問題,場景是:從github上下載一個開源組件demo,導入到本地的Eclispe中,就是報錯,開始因爲是上述的兩個問題,但是最後發現都不是,然後又以爲是Eclipse版本或者是SDK,ADT這樣的版本的問題,耗費了我好長時間,最後想起來github上的這些開源都是老外們寫的東東,肯定用的是UTF-8編碼的,但是我本地Eclipse的編碼是GBK,所以我立馬改了一下編碼,終於解決了,所以在這裏深深的體會到,在使用Eclipse導入工程的時候,還用注意編碼的問題,切記!
4.這個問題也是不難發現的,不會經常遇到,就是在多屏適配的時候,比如你在values-sw720文件夾中定義了dimens的一個尺寸,但是沒有在values中定義相應的尺寸大小,然後在xml中使用了這個dimens尺寸,當你運行程序到720p(三星平板)的設備上是沒有問題的,如果將程序跑在480的設備上,就會出現這種異常(原因是480設備可能會從values文件夾中查找尺寸,找不到出錯),這個問題很難發現。所以我們在做屏幕適配工作的時候,一定要謹慎。