当用户按下按钮时,用于更改文本的代码不起作用。我试图在某些方面改变它,但我无法弄清楚为什么它会改变...请给我一点帮助
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);
}
});
}
}
答案 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
不要对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);
您需要在Views
用layout
充气后初始化setContentView()
。由于您的Views
存在layout
,如果您尚未首先夸大null
,则会layout
返回setContentView()
。您可以在txt
之前声明它们,但直到之后才能初始化它们。
此外,由于您尝试访问listener
内的final
,因此必须NPE
或声明为上述成员变量。
这是一个相当容易发现的,但它们并非总是如此。当您发布问题时,请尝试描述不起作用的内容以及如何操作。当你试图在listener
上设置Button
时,我会猜测{{1}}这会崩溃。当它崩溃时,请提供logcat,以便我们更容易发现问题。