EditText 空指針問題

今天在Android中碰到了這樣一個問題,其實應該很少人會碰到,因爲只有像我這種奇葩纔會犯這種錯誤。

但既然解決了,我就想在這裏跟大家分享一下,畢竟它困擾了我一個白天啊。。。不多說了,看下面。。。

其實問題很簡單,就是Caused By : java.lang.NullPointerException.

上面就是我在用EditText 的時候它給我提示的錯誤類型。

爲了簡便,截取了部分代碼如下,這就是問題的根源所在。

super.onCreate(savedInstanceState);
final EditText et = (EditText)findViewById(R.id.editTextId);
String str = et.getText().toString().trim();
setContentView(R.layout.main);

咋一看,沒什麼不對啊。就是因爲我是新手,所以沒看出端倪來。然後拼命的報錯,拼命的上網查。

而網上卻沒有這個情況。。。

ADT Log 裏面顯示的出錯位置就是String str = et.getText().toString().trim();這一行。

可它真的沒什麼不對啊,如果此時你呵呵了。那麼你已經看出來了。

對,就是setContentView(R.layout.main);這句話位置放錯了,它應該放在引用的資源文件的前面,在這裏也就是

final EditText et = (EditText)findViewById(R.id.editTextId);這句話的前面。因爲R.id.editTextId這個Id

引用到了R.layout.main這個Xml文件裏面的對EditText的定義<EditText android:id="@+id/editTextId"

而在final EditText et = (EditText)findViewById(R.id.editTextId)句話之前我們並沒有把R.layout.main這個Xml

文件放到我們的Context中來。我們可以觀察一下findViewById()方法,會發現原來此方法中的R.id.editTextId是從當前

Activity的主佈局文件xml中獲取。而R.layout.main一定要先於findViewById(R.id.editTextId)在程序中聲明。

那麼這樣改就對了:

super.onCreate(savedInstanceState);

setContentView(R.layout.main);
final EditText et = (EditText)findViewById(R.id.editTextId);
String str = et.getText().toString().trim();
setContentView(R.layout.main);

這是本人犯的低價錯誤,對於大神沒有什麼參考價值,但我確確實實被它耍了一回,所以有必要在這裏分享一下。

發佈了46 篇原創文章 · 獲贊 18 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章