2012-02-06 39 views
1

TextView的文本我有以下佈局的main.xml中如何從main.xml中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 

<TextView 
    android:id="@+id/textview01" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello" /> 

,我試圖檢索文本即@字符串/你好通過使用下面的代碼

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 



    TextView tv= (TextView) findViewById(R.id.textview01); 
    String input= tv.getText().toString(); 

    Log.d("Info",input); 

但我無法看到輸出。應用是在輸入的字符串與NULL異常錯誤崩潰= tv.getText(

回答

4

你需要調用

setContentView(R.layout.main); 

調用findViewById

+0

謝謝。我明白了編碼,但是你會詳細說明嗎?我們必須在查找任何標識之前調用內容視圖嗎? 在此先感謝 – user1169079 2012-02-06 06:47:05

+0

@ user1169079 - 在您調用setContentView之前,xml中定義的視圖不會附加到活動的窗口,因此沒有查找「findViewById」的查找。 – 2012-02-06 16:39:16

1
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 


    TextView tv= (TextView) findViewById(R.id.textview01); 
    String input= tv.getText().toString(); 

    Log.d("Info",input); 
1
  1. 之前,請確保您已設置了正確查看

    setContentView(R.layout.main); 
    

如果沒有這樣做,你會得到「tv」變量爲null,因爲視圖沒有加載。 2.如果設置了上述內容,則檢查strings.xml中是否正確設置了「hello」。

4

更新你的活動代碼如下,

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); // This line is missing in your code. 

    TextView tv= (TextView) findViewById(R.id.textview01); 
    String input= tv.getText().toString(); 

    Log.d("Info",input); 

你實際上是缺少的XML到活動的映射。

0

你得到NullPointerException,因爲你在電視中的引用爲空。 您沒有設置佈局,即setLayout(R.layout.main);

super.onCreate(savedInstanceState);之後包含上面的行,您的代碼將起作用。