-1

此代码在用户按下按钮时更改文本不起作用。我试图以某种方式改变它,但我不知道为什么它不会改变......请给我一点帮助

package com.cookbook.simple_activity;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class activity extends Activity {
    private TextView txt = (TextView) findViewById(R.id.hello_text);
    Button startButton = (Button) findViewById(R.id.trigger);
   @Override
   public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_simple);


   startButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            txt.setText(R.string.pressthisbutton);
        }
    });
 }
}
4

4 回答 4

0

始终在 oncreate 方法中初始化您的 textview 和其他小部件,否则您将得到NullPointerException

试试这个方法

@Override
 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_simple);
    txt = (TextView) findViewById(R.id.hello_text);
    startButton = (Button) findViewById(R.id.trigger);

    txt.setText("It Working Now!!");
于 2013-09-15T18:16:26.563 回答
0
package com.cookbook.simple_activity;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class activity extends Activity {

   @Override
   public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_simple);

    final TextView txt = (TextView) findViewById(R.id.hello_text);
    Button startButton = (Button) findViewById(R.id.trigger);


   startButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            txt.setText("your text");
        }
    });
 }
}

试试这个,我移动了你的按钮和 textview 声明到活动的主体。

于 2013-09-15T18:08:11.573 回答
0

android生命周期总是以onCreate()方法分配id开始onCreate

不要使用私有修饰符TextView

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class activity extends Activity {
     TextView txt; 
    Button startButton;

   @Override
   public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_simple);
          txt = (TextView) findViewById(R.id.hello_text);
     startButton = (Button) findViewById(R.id.trigger);


   startButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {

            txt.setText(R.string.pressthisbutton);

        }
    });
 }
}
于 2013-09-15T18:12:30.540 回答
0

将其更改为

    public class activity extends Activity {
    private TextView txt;
    Button startButton;
   @Override
   public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_simple);
        txt = (TextView) findViewById(R.id.hello_text);
        startButton = (Button) findViewById(R.id.trigger);

您需要在用Views充气后初始化您layoutsetContentView()。由于您Views存在于您的 中,因此如果您没有先膨胀layout,它们将返回。您可以在您之前声明它们,但直到之后才能初始化它们。nulllayoutsetContentView()

此外,由于您试图txt在您的内部访问,listener它必须是final或声明为上面的成员变量。

这是一个相当容易发现的地方,但并非总是如此。当您发布问题时,请尝试描述什么不起作用以及如何。在这里,NPE我猜当您尝试设置时listenerButton会崩溃。当它确实崩溃时,请提供 logcat,以便我们更容易发现问题。

于 2013-09-15T19:27:22.107 回答