1. 程式人生 > >Android Studio中的控制元件初始化疑問:build沒問題,但執行模擬器時出現問題。錯誤程式碼:java.lang.RuntimeException: Unable to instant

Android Studio中的控制元件初始化疑問:build沒問題,但執行模擬器時出現問題。錯誤程式碼:java.lang.RuntimeException: Unable to instant

在使用Android Studio,啟動模擬器時,出現如下錯誤:


Logcat中的資訊如下:

java.lang.RuntimeException:Unable to instantiate activityComponentInfo{com.example.dcyyw.application_test1/com.example.dcyyw.application_test1.MainActivity}:java.lang.NullPointerException: Attempt to invoke virtual method'android.content.res.Resources android.content.Context.getResources()' on anull object reference

 先分析一下:

1.    Unable to instantiate activityComponentInfo,百度翻譯為:無法例項化活動元件資訊。可知,某個類在例項化的時候出現了問題

2.    Attempt to invoke virtualmethod 'android.content.res.Resources android.content.Context.getResources()'on a null object reference,百度翻譯為:試圖在空物件引用上呼叫虛擬方法“ANDROID.Cord.RES.RealthAddio.Calth.Calist.GETRealsCues()”。意思就是我們不能對一個null(空)物件,及沒有賦值的物件使用方法“ANDROID.Cord.RES.RealthAddio.Calth.Calist.GETRealsCues()”,但奇怪的是,我壓根就沒用過這個方法。使用百度搜索一下,什麼都搜不到

3.    這時就應該從物件例項化和空物件這兩個地方著手,由於我的工程剛剛建立,新增的東西不多,比較方便。新增的程式碼只有2行:

在建立TextView是,指定了它的引數this,而在Android Studio3環境下,會自動在this前增加context:,我試著將“=new TextView(context this);”這一部分註釋掉,就像上圖初始化Button一樣,結果竟然可以執行通過了。

總結:本不想寫總結,因為並沒有查出根本原因,只是找到了一個臨時的解決方法,但本著寫文章的精神,還是寫了這句話。