Android運行時異常“Binary XML file line # : Error inflating class”

來源:互聯網
上載者:User

標籤:android   style   blog   class   code   ext   

在原生Android下編譯APK,編譯沒有問題,但是在啟動並執行時候經常出現如標題所描述的異常,然後整個程式Crash掉......

    我遇到該問題常常都是因為修改了資源檔所引起,大致有以下幾種方式來解決:

    1. 引用類名問題:自訂了一個View,將他用於布局檔案中,假設他的包名叫MyPackage,類名叫MyTestView,這個時候你在XML作為布局元素來布局的話,必須使用完整路徑名,也就是包名加類名來引用,用MyPackage.MyTestView來進行引用。

    2.建構函式問題:自訂一個View,必須派生實現基類View的三個建構函式

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

    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 style

    從文檔上的介紹來看,第二個和第三個建構函式對於XML這種引用方式是必須實現的,這三個建構函式應該是在不同的應用場合來執行個體化一個View對象。

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

    4.找不到資源檔:我原來在2.3的原生系統增加動態壁紙的時候,動態壁紙一跑起來就出這個異常,然後crash,當時就是因為找不到drawable的資源檔,於是當時我把drawable的hdpi或nodpi等檔案夾的圖片資源都拷貝一份到drawble下,問題解決(當時一直不明白系統會根據解析度來選擇載入不同drawable下檔案夾的資源,為什麼這裡必須放入drawable中)。

 

 

本文轉自:http://blog.csdn.net/huangxiaohu_coder/article/details/8497286

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.