After some time spent bug hunting it turns out that :
public class MainActivity extends BaseActivity { // BaseActivity extends Activity
public MainActi
Wait for the end of onCreate
to call this method.
public class MainActivity extends BaseActivity {
public onCreate(Bundle savedInstanceState) {
super(savedInstanceState);
getApplicationContext(); //activity has a context now
}
}
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