我有以下代码:
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()
中初始化TextViewspublic 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");
}
它有效。为什么必须在onCreate中初始化对象?
答案 0 :(得分:4)
您的活动在Window
之前不会有onCreate()
。在窗口初始化之前尝试查找任何视图将导致NPE。
此外,尝试在setContentView()
之前查找视图会返回null
,因此返回值对任何内容都不利。