为什么getApplicationContext()在活动的构造函数抛出空指针异常?(Why get

2019-08-26 22:00发布

一段时间花在错误的狩猎之后事实证明:

public class MainActivity extends BaseActivity { // BaseActivity extends Activity

    public MainActivity() {
        super();
        getApplicationContext(); // NPE here
    }
}

为什么呢? 这哪里是记录?
升级Froyo

Answer 1:

等待结束onCreate调用此方法。

public class MainActivity extends BaseActivity { 

    public onCreate(Bundle savedInstanceState) {
        super(savedInstanceState);
        getApplicationContext(); //activity has a context now
    }
}


Answer 2:

只是为了得到这是怎么回事的感觉。 活动 延伸ContextThemeWrapper延伸ContextWrapper从其活动继承getApplicationContext() ContextWrapper 实现它 :

@Override
public Context  getApplicationContext() {
    return mBase.getApplicationContext(); // mBase is a Context
}

在仅公共构造的ContextWrapper是:

 public  ContextWrapper(Context base) {
     mBase = base;
 } 

ContextThemeWrapper 我们有 :

 public  ContextThemeWrapper() {
     super(null);
 }

而且由于活动没有定义一个明确的构造函数的构造上述被称为- mBase == null在活动的构造-热潮。

从链接4.2.2_r1



文章来源: Why getApplicationContext() in constructor of Activity throws null pointer exception?