1. 程式人生 > >Spinner中getResource()空指標問題以及Context傳值問題

Spinner中getResource()空指標問題以及Context傳值問題

在封裝一個Spinner的時候,傳值報空指標異常:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference
報錯語句:
timeAdapter = new ArrayAdapter<String>(SpinnerApp, android.R.layout.simple_spinner_item,
                getResources().getStringArray(R.array.timesC));
在逐個篩查後,確定是第三個引數沒有獲取到值,語句沒有問題,但是查詢後發現,getResource()這個方法的呼叫類不明確,如果是封裝的Spinner類呼叫,即預設呼叫的話,確實沒有傳入值,而如果是從主Activity呼叫的話,沒有明確宣告,所以需要傳入一個Context,指明到底是哪個類在呼叫該方法,假設為主Activity呼叫,則需要在自己封裝的類中傳入一個Context用來接收主Activity的傳入。因此,在呼叫某個預設方法的時候,一定要明確到底是哪個類在呼叫。

修改後的程式碼:

timeAdapter = new ArrayAdapter<String>(SpinnerApp, android.R.layout.simple_spinner_item,
                SpinnerApp.getResources().getStringArray(R.array.timesC));
此處的SpinnerApp為傳入的Context。