2015-11-07 177 views
0

儘管看起來像是一個簡單的問題,但我無法使其工作。 (在StackOverFlow上有類似的問題,但似乎不適用於我,使用xml onClick屬性)。Android,onClick按鈕

我想

我使用下面的代碼更改文本時,一個按鍵(基礎知識...)。

package com.example.mathieu.pangolin; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 
public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 

    public void doSomething(View v) { 
     TextView myText = (TextView) this.findViewById(R.id.worldMood); 
     myText.setText("The word is happy"); 
    } 
} 

和activity_main.xml中

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> 

    <TextView 
     android:name="@+id/worldMood" 
     android:text="Grumpy World!" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <Button android:name="@+id/worldButton" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:onClick="doSomething" 
     android:text="Make the World Happy" /> 

</RelativeLayout> 

我收到一條錯誤信息,但無法找出解決方案。在myText上有一種NullPointerException? 什麼是錯的,我無法通過它的Id找到我的文本?

+0

的TextView =會將myText(的TextView)findViewById(R.id.worldMood);在onCreate和android中執行該操作:name to android:id –

回答

3

你必須使用android:id指定屬性不android:name的ID。所以改變下面的行,

android:name="@+id/worldMood" 

android:id="@+id/worldMood" 
+1

完美答案!!!!! +1上 –

+1

似乎它會工作的確如此,在我試試的路上。只能在8分鐘內接受答案,我會的。謝謝hawkeye! ;) – Fundhor

-1

試試這個。

public class MainActivity extends AppCompatActivity { 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      TextView myText = (TextView)findViewById(R.id.worldMood); 
     } 

     public void doSomething(View v) { 

      myText.setText("The word is happy"); 
     } 
    } 
+0

坦克你試圖幫忙;)不是解決方案,但我很感激。 – Fundhor