为什么必须在onCreate中初始化对象?

时间:2015-05-23 21:06:28

标签: 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(savedInstanceState);
    setContentView(R.layout.activity_main);
    number.setText("Text");
    number.setText("Text");
}

接下来是更多代码,但是当我运行它时它会崩溃。

这样做之后,我试图在onCreate()

中初始化TextViews
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");
}

它有效。为什么必须在onCreate中初始化对象?

1 个答案:

答案 0 :(得分:4)

您的活动在Window之前不会有onCreate()。在窗口初始化之前尝试查找任何视图将导致NPE。

此外,尝试在setContentView()之前查找视图会返回null,因此返回值对任何内容都不利。