Just to get a feeling of what's going on. Activity extends ContextThemeWrapper which extends ContextWrapper from whom Activity inherits getApplicationContext()
. ContextWrapper implements it as :
@Override
public Context getApplicationContext() {
return mBase.getApplicationContext(); // mBase is a Context
}
The only public constructor of ContextWrapper
is :
public ContextWrapper(Context base) {
mBase = base;
}
in ContextThemeWrapper
we have :
public ContextThemeWrapper() {
super(null);
}
and since Activity does not define an explicit constructor the constructor above is called - mBase == null
in Activity's constructor - boom.
Links from 4.2.2_r1
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…