2015-11-07 2 views
0

Хотя кажется, что легкий вопрос, я не могу заставить его работать. (Есть похожие вопросы в StackOverFlow, но для меня это не работает, используя атрибут xml onClick).Android, onClick Button

Я хочу, чтобы изменить текст при нажатии кнопки (основы ...)

Я использую следующий код.

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> 

Я получаю сообщение об ошибке, но не могу понять решение. Вид исключения NullPointerException на myText? Что не так, что я не могу найти свой текст по его идентификатору?

+0

TextView MyText = (TextView) findViewById (R.id.worldMood); сделайте это в onCreate and android: name to android: id –

ответ

3

Вы должны использовать android:id указать идентификатор атрибута не android:name. Таким образом, изменить следующую строку,

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