2010-12-09 127 views
4

我有兩個圖像,紅燈和綠燈。我有一個自定義ListView,當列表項處於非活動狀態時,我想顯示紅燈,並在活動時顯示綠燈。按下時列表項目被激活。Android ImageView空指針異常

這裏是我的代碼

row.xml

<ImageView 
    android:id="@+id/iconLight" 
    android:src="@drawable/light_off" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"/> 

main.java

ImageView iconLight = (ImageView)findViewById(R.id.iconLight); 
iconLight.setImageResource(R.drawable.light_on); 

我得到一個NullPointerException執行設置的圖像資源就行了。所以我做了一些測試,我刪除了在XML文件中設置src的行,並試圖將它設置在主類中。仍然是NPE。所以我嘗試不改變資源,但只是改變阿爾法。仍是NPE。

我不知道我在做什麼錯。文件light_off.pnglight_on.png都在res/drawable-ldpi中,當我在XML中指定它們時,它們中的任何一個都可以工作。但是,我試圖在主文件中對iconLight進行的任何更改都會導致此NPE。有任何想法嗎?

+0

你能否把你整個文件粘貼到NPE? – Cristian 2010-12-09 01:15:37

+0

該文件相當於幾百行。 – linsek 2010-12-09 01:17:29

回答

12

得到的線NPE的唯一途徑...

iconLight.setImageResource(R.drawable.light_on); 

是對iconLight爲空。所以,你的findViewById失敗。在調用findViewById之前,您是否設置了佈局?你確定 R.id.iconLight是否在Activity的根目錄下?

0

我有同樣的問題。這是幫助我理解的代碼。這是一個對話窗口,但也可以幫助你。

final Dialog dialog = new Dialog(context); 
    dialog.setContentView(R.layout.custom); 
    dialog.setTitle("Title..."); 
    TextView text = (TextView) dialog.findViewById(R.id.text); 
    text.setText("Android"); 
    ImageView image = (ImageView) dialog.findViewById(R.id.image); 
    image.setImageResource(R.drawable.ic_launcher); 

看最後一行之前的行。注意它是如何實例化ImageView的。 無論如何,每次對圖像的更改都是在setContentView之後進行的。