1

我正在编写一个非常基本的程序,旨在让文本视图在屏幕上按下按钮后显示短语“Hello”,但无法弄清楚为什么每次运行它时,它都会说应用程序已意外停止。

这是我写的程序:

public class EtudeActivityActivity extends Activity{
  TextView tvResponse;

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

    final TextView tvResponse = (TextView)  findViewById (R.id.tvResponse);
  }


  public void updateTV(View v) {
    tvResponse.setText("Hello");
  }
}

android:onClick = "updateTV"另外,我在我的 main.xml 文件中插入了一个按钮。

谢谢你的帮助!

4

2 回答 2

3

这是因为您没有设置tvResponse成员变量。相反,您使用相同的名称设置一个新的局部变量。所以当你打电话时setText(),你正在访问一个无效的引用

你需要改变

final TextView tvResponse = (TextView)  findViewById (R.id.tvResponse);

tvResponse = (TextView)  findViewById (R.id.tvResponse);

updateTV()设置成员变量,以便稍后(调用时)具有有效引用

于 2012-06-08T22:29:23.000 回答
1

我怀疑您有一个名为的实例变量tvResponse,您没有向我们展示 - 这就是该updateTV方法将引用的内容。这与您在内部声明的局部 变量完全不同。我怀疑如果您将最后一行从局部变量声明更改为对变量的简单赋值,它可能会起作用。否则,如果没有为实例变量赋值,它将具有默认值,从而导致in 。tvResponseonCreateonCreatetvResponsetvResponsenullNullPointerExceptionupdateTV

于 2012-06-08T22:27:30.173 回答