2011-06-13 64 views
-1
private TextView text; 

if(available == true){ 
     View view = (View)findViewById(R.id.emptyprogram); 
     view.setVisibility(View.GONE); 
     filldata(); 
    } else { 
     text = (TextView)findViewById(R.id.emptyprogram); 
     text.setText("Tiada Rancangan Yang Sedang Atau Akan Disiarkan!!!"); 
    } 
} 

當我執行,它給了我NullPointerException錯誤就行了text.settext("...");的NullPointerException上text.settext(..)

問題是什麼?我在另一邊跑,它沒有問題。

+2

首先告訴我爲什麼你使用'如果(可用== true)'而不是'if(available)'?大括號也不合適。有一個額外的支架。 ***我在另一邊跑,它沒有問題。***哪個方面? – 2011-06-13 08:51:21

+0

您可以在該行上獲得空指針的唯一方法是如果'findViewById'返回null。 – 2011-06-13 08:54:49

+0

「目前還沒有設計廣播!!!」 ? – 2011-06-13 09:00:34

回答

4

調用這個方法必須返回null

findViewById(R.id.emptyprogram); 

當你嘗試調用下一行的setText方法,你會得到一個NullPointerException

+0

爲什麼它會爲空? 我的其他textview調用r.id.emptycandidate也沒有返回null – newonandroid 2011-06-13 09:28:28

+0

@newonandroid - 我不可能回答,沒有看到該方法的源代碼。您是否檢查過參數的**值**是否與被調用的兩次相同? – 2011-06-13 14:05:25

0

你有沒有打電話findViewById()之前調用setContentView()?你必須創建你的用戶界面,然後纔可以使用它..

+0

是的,我只是削減問題發生的代碼 – newonandroid 2011-06-13 09:29:05

+0

把xml的代碼放在這裏,以及如何調用setContentView(),因爲這是問題的原因。 – damluar 2011-06-13 09:31:48

0

如果你害怕的TextView爲null,試試這個,以避免例外:

text = (TextView)findViewById(R.id.emptyprogram); 
if(text != null) 
    text.setText("Tiada Rancangan Yang Sedang Atau Akan Disiarkan!!!"); 
+0

這隻適用於處理空文本的合理方法。如果'text'在這裏永遠不會是null,那麼拋出一個NPE比上面的代碼更可取,因爲上面的代碼只會掩蓋潛在的問題 – 2011-06-13 14:09:24