我有这个Android代码。我在xml文件中定义了按钮的布局。我想通过id来设置按钮的文本。但是app力close.whats错了吗?
package com.action ;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
public class ActionActivity extends Activity {
@Override
public void onCreate(Bundle i){
super.onCreate(i);
Button button=(Button) findViewById(R.id.but);
button.setText("Hey!!");
setContentView(R.layout.main);
}
}
...日Thnx
答案 0 :(得分:5)
在使用setContentView(R.layout.main);
之前,您必须先使用findViewById()
。
如果您不这样做,findViewById()
将返回null
(因为当前布局中没有该ID的视图),并且在尝试设置时您将获得NullPointerException
TextView
上的文字。
onCreate()
的正确版本应如下所示:
public void onCreate(Bundle i) {
super.onCreate(i);
setContentView(R.layout.main);
Button button = (Button) findViewById(R.id.but);
button.setText("Hey!!");
}
答案 1 :(得分:3)
在创建Button实例之前放置setContentView(R.layout.main)。 像这样:
setContentView(R.layout.main);
Button button=(Button) findViewById(R.id.but);
button.setText("Hey!!");
答案 2 :(得分:0)
在设置findViewById(R.id.but)之前必须先放置setContentView(R.Layout.main)。因为它会生成nullpointer Exception。