当用户按下按钮时更改文本的代码不起作用。为什么?
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);
}
});
}
}
最佳答案
更改为
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);
在使用 setContentView()
膨胀 layout
后,您需要初始化 Views
。由于您的 Views
存在于您的 layout
中,因此如果您没有先膨胀您的 layout
,它们将返回 null
。您可以在 setContentView()
之前声明它们,但在此之后才能初始化它们。
此外,由于您尝试在 listener
内访问 txt
,因此它必须是 final
或声明为上面的成员变量。
这是一个相当容易发现的问题,但并非总是如此。当您发布问题时,请尝试描述哪些内容不起作用以及如何起作用。我猜当您尝试在 Button
上设置 listener
时,它会崩溃,这将是一个 NPE
。当崩溃时,请提供logcat,以便我们更容易发现问题。
编辑
查看 xml 后,您对初始文本使用的 string
值与单击 Button
时的文本值相同,所以当然不会。改变。我不确定您在这里追求什么,但代码正在按照编写的方式运行。
关于java - 为什么这个在 Android 上更改文本的代码不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18809026/