0

我有一个这样的 MainActivity.java 文件

public class MainActivity extends Activity {
EditText etword, etmean;
Button binsert;
Context c;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    etword = (EditText) findViewById(R.id.etWord);
    etmean = (EditText) findViewById(R.id.etMeaning);
    binsert = (Button) findViewById(R.id.bInsert);


    setContentView(R.layout.activity_main);
}

}

当我没有为我的按钮设置 OnclickListener 时,此文件运行良好。但是当我这样做时,主要活动无法开始。问题出在哪里????我正在像这样设置 onclicklistener.... binsert.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            binsert.setTextColor(Color.BLUE);
        }
    });

显示 RuntimeException 错误和 NullPointerException 错误。我错过了什么?

4

3 回答 3

1

您需要先将内容设置为活动,然后再初始化视图。

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);  // should come first
etword = (EditText) findViewById(R.id.etWord); // then initialize views
etmean = (EditText) findViewById(R.id.etMeaning);
binsert = (Button) findViewById(R.id.bInsert);
}

您可以findViewById将当前视图层次结构设置为活动。您的初始化失败。因此NullPointerException

于 2013-08-15T11:08:20.477 回答
1

首先,您需要设置内容视图。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main); <--------------------------------see this line
    etword = (EditText) findViewById(R.id.etWord);
    etmean = (EditText) findViewById(R.id.etMeaning);
    binsert = (Button) findViewById(R.id.bInsert);



}
于 2013-08-15T11:09:23.160 回答
0

setContentView()应该被称为第一个。在这种情况下,检查日志输出 (logcat) 也会有所帮助。

于 2013-08-15T11:10:17.833 回答