public class MainActivity extends FragmentActivity {
TextView textView = (TextView) findViewById(R.id.textbox);
//rest of code.........
以上代码生成以下异常,
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.Window.findViewById(int)' on a null object reference
at android.app.Activity.findViewById(Activity.java:2090)
at com.example.kuldeep.myapplication.MainActivity.<init> (MainActivity.java:24)
当我调试这个时,我才知道这个代码甚至在onCreate()方法之前执行。 这怎么可能?以及如何捕获此类异常?
答案 0 :(得分:0)
这怎么可能?
因为那是你写的。当创建活动的实例时,将执行字段初始值设定项(例如,(TextView) findViewById(R.id.textbox)
)。
如何捕捉此类异常?
你不是。相反,您可以避免异常。通常,不要从字段初始值设定项中调用从Activity
继承的方法。更具体地说,在窗口小部件存在之前,您无法找到窗口小部件,并且在调用setContentView()
之前不会发生这种情况(或者您设置了此活动的UI)。