为什么必须在onCreate中初始化对象?(Why must be objects initialized in onCreate?)
我有以下代码:
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中初始化对象?
I have the following code:
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"); }followed by more code, but when I run it it crashes.
After doing that i tried to initialize TextViews in onCreate()
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"); }and it worked. Why must objects be initialized in onCreate?
最满意答案
在onCreate()之前,您的活动将没有Window 。 在窗口初始化之前尝试查找任何视图将导致NPE。
此外,尝试在setContentView()之前查找视图将返回null s,因此返回值不适合任何事情。
Your activity won't have a Window until onCreate(). Attempting to find any views before the window is initialized will lead to NPE.
Additionally, attempting to find views before setContentView() will return nulls and so the return values are not good for anything.
更多推荐
发布评论