为什么程序意外停止?

时间:2012-06-08 22:24:16

标签: java android

我正在编写一个非常基本的程序,旨在让文本视图在屏幕上按下按钮后显示短语“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");
  }
}

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

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

这是因为您没有设置tvResponse成员变量。而是使用相同的名称设置新的局部变量。因此,当您致电setText()时,您正在访问无效的参考

您需要更改

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

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

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

答案 1 :(得分:1)

我怀疑你有一个名为tvResponse实例变量,你没有向我们展示过 - 这就是updateTV方法所引用的内容。这与您在tvResponse内声明的本地 onCreate变量完全分开。我怀疑如果你将onCreate的最后一行从局部变量声明更改为tvResponse变量的简单赋值,它可能会起作用。否则,如果没有任何内容为实例tvResponse变量赋值,则其默认值为null,导致NullPointerException中的updateTV