FATAL EXCEPTION: ……java
java.lang.RuntimeException: Unable to start activity ComponentInfo……android
ava.lang.NullPointerException: Attempt to invoke virtual method 'android……on a null object reference佈局
介紹:spa
我在寫項目的時候,遇到了button等控件出現on a null object reference ,在網上找了好久沒找到解決辦法。最後仍是本身發現了問題的來源,又本身改正了。具體形式如上。調試
問題出現的狀況:開發
佈局有該,而且在java代碼中也有 findViewById語句, 可是調試的時候仍是出了on a null object reference錯誤。it
問題出現的緣由:io
在安卓開發的時候,遇到相似的佈局以及實現的方法的時候,咱們就習慣直接複製。object
通常來講,不一樣佈局中設置id爲同名的時候,是不會報錯的。可是複製的狀況特殊,雖然把setsetContentView(R.layout.xxx)中xxx的名字修改了,可是findViewById中的ID卻沒有改變。也就是說仍是源佈局(也就是被複制的那個佈局)裏的ID。方法
有什麼證據呢?
鼠標左鍵中止findViewById(R.id.yyy)中的yyy上,比較複製的java文件和源java文件,會發現他們的ID是同樣的。
解決辦法:
緣由找到了,解決辦法就呼之欲出了。
個人作法是把第二個佈局裏的控件名字全改了(加了個前綴)。這個時候,會發現java代碼不會報錯。可是findViewById裏的內容也要改。
感受這樣改正仍是挺麻煩的,期待有更好的辦法。