需要一些关于我的代码的提示,我的代码不会更改Android上的文本

时间:2013-09-15 18:05:00

标签: java android

当用户按下按钮时,用于更改文本的代码不起作用。我试图在某些方面改变它,但我无法弄清楚为什么它会改变...请给我一点帮助

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 个答案:

答案 0 :(得分: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声明为活动的主体。

答案 1 :(得分:0)

android生命周期始终以onCreate()方法开始,在onCreate

中分配id

不要对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);

        }
    });
 }
}

答案 2 :(得分: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!!");

答案 3 :(得分: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);

您需要在Viewslayout充气后初始化setContentView()。由于您的Views存在layout,如果您尚未首先夸大null,则会layout返回setContentView()。您可以在txt之前声明它们,但直到之后才能初始化它们。

此外,由于您尝试访问listener内的final,因此必须NPE或声明为上述成员变量。

这是一个相当容易发现的,但它们并非总是如此。当您发布问题时,请尝试描述不起作用的内容以及如何操作。当你试图在listener上设置Button时,我会猜测{{1}}这会崩溃。当它崩溃时,请提供logcat,以便我们更容易发现问题。