为什么在Activity的构造函数中getApplicationContext()会抛出空指针异常?

时间:2013-04-14 22:03:13

标签: android constructor nullpointerexception android-context

经过一段时间的寻找虫子后,事实证明:

public class MainActivity extends BaseActivity { // BaseActivity extends Activity

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

为什么?这记录在哪里?
Froyo的

2 个答案:

答案 0 :(得分:9)

等待onCreate结束调用此方法。

public class MainActivity extends BaseActivity { 

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

答案 1 :(得分:8)

只是想知道发生了什么。 活动 extends ContextThemeWrapper扩展 ContextWrapper Activity 继承getApplicationContext() ContextWrapper implements it as

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

ContextWrapper的{​​{3}}是:

 public  ContextWrapper(Context base) {
     mBase = base;
 } 
ContextThemeWrapper only public constructor中的

 public  ContextThemeWrapper() {
     super(null);
 }

由于 Activity 没有定义显式构造函数,因此上面的构造函数在Activity的构造函数中被调用 - mBase == null - 繁荣。

来自4.2.2_r1

的链接
相关问题