Android 为什么必须在onCreate中初始化对象?
我有以下代码:Android 为什么必须在onCreate中初始化对象?,android,Android,我有以下代码: public class MainActivity extends Activity { TextView number=(TextView)findViewById(R.id.number2); TextView number2=(TextView)findViewById(R.id.number2); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(save
public class MainActivity extends Activity {
TextView number=(TextView)findViewById(R.id.number2);
TextView number2=(TextView)findViewById(R.id.number2);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
number.setText("Text");
number.setText("Text");
}
接着是更多的代码,但当我运行它时,它崩溃了
之后,我尝试在onCreate()中初始化TextView
它成功了。为什么必须在onCreate()中初始化对象?在
onCreate()之前,您的活动不会有窗口。在初始化窗口之前尝试查找任何视图将导致NPE
此外,尝试在setContentView()
之前查找视图将返回null
s,因此返回值对任何事情都没有好处。在onCreate()
之前,您的活动将不会有窗口。在初始化窗口之前尝试查找任何视图将导致NPE
此外,尝试在setContentView()
之前查找视图将返回null
s,因此返回值不适用于任何情况
public class MainActivity extends Activity {
TextView number;
TextView number2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
number=(TextView)findViewById(R.id.number);
number2=(TextView)findViewById(R.id.number2);
number.setText("Text");
number.setText("Text");
}