如何捕获Android活动的<init>块例外?

时间:2016-08-12 19:29:26

标签: java android exception exception-handling oncreate

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()方法之前执行。 这怎么可能?以及如何捕获此类异常?

1 个答案:

答案 0 :(得分:0)

  

这怎么可能?

因为那是你写的。当创建活动的实例时,将执行字段初始值设定项(例如,(TextView) findViewById(R.id.textbox))。

  

如何捕捉此类异常?

你不是。相反,您可以避免异常。通常,不要从字段初始值设定项中调用从Activity继承的方法。更具体地说,在窗口小部件存在之前,您无法找到窗口小部件,并且在调用setContentView()之前不会发生这种情况(或者您设置了此活动的UI)。

相关问题