Android運行時異常「Binary XML file line # : Error inflating class」

轉:http://blog.csdn.net/huangxiaohu_coder/article/details/8497286app

在原生Android下編譯APK,編譯沒有問題,可是在運行的時候常常出現如標題所描述的異常,而後整個程序Crash掉......函數

    我遇到該問題經常都是由於修改了資源文件所引發,大體有如下幾種方式來解決:佈局

    1. 引用類名問題:自定義了一個View,將他用於佈局文件中,假設他的包名叫MyPackage,類名叫MyTestView,這個時候你在XML做爲佈局元素來佈局的話,必須使用完整路徑名,也就是包名加類名來引用,用MyPackage.MyTestView來進行引用。.net

    2.構造函數問題:自定義一個View,必須派生實現基類View的三個構造函數code

    View(Context context)     //Simple constructor to use when creating a view from codeorm

    View(Context context, AttributeSet attrs)     //Constructor that is called when inflating a view from XML對象

    View(Context context, AttributeSet attrs, int defStyle)     //Perform inflation from XML and apply a class-specific base styleblog

    從文檔上的介紹來看,第二個和第三個構造函數對於XML這種引用方式是必須實現的,這三個構造函數應該是在不一樣的應用場合來實例化一個View對象。圖片

    3.編譯的中間文件沒有清理乾淨:第三種就是你在原生系統代碼的編譯環境下編譯APK以後,特別是修改了XML,出現標題所述現象,這個時候你只須要刪除out目錄下編譯生成的中間文件夾便可(具體名字記不清了:在編譯過程當中,系統會將那個位置打印出來,經過串口來看吧,.../out/....../..../classes.dex,你循着這個路徑往前推到你的應用的project名字那一層文件夾),刪除再從新make就OK了。ci

    4.找不到資源文件:我原來在2.3的原生系統增長動態壁紙的時候,動態壁紙一跑起來就出這個異常,而後crash,當時就是由於找不到drawable的資源文件,因而當時我把drawable的hdpi或nodpi等文件夾的圖片資源都拷貝一份到drawble下,問題解決(當時一直不明白系統會根據分辨率來選擇加載不一樣drawable下文件夾的資源,爲何這裏必須放入drawable中)。

相關文章
相關標籤/搜索