Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Calling context.getResources() returns null

So I am trying to get a string resource in my project but when I called context.getResources().getString(...), I get a NullPointerException. In debug mode, I found out that the context isn't null but looking at its members, I found out that mResources was null. Why are the resources not loaded for the activity context?

EDIT

Apparently, this is what triggered the Exception

public class MyActivity extends Activity {

    SomeClass someClass = new SomeClass(this);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}


public class SomeClass {

    private final Context mContext;

    public SomeClass(Context context) {
        mContext = context;
        mContext.getResources().getString(R.string.app_name);
    }
}

I had to move the initialization of someClass to after super.onCreate() as suggested by CommonsWare. Thanks.

like image 843
Olayinka Avatar asked Jun 23 '14 19:06

Olayinka


1 Answers

If I had to guess, you are trying to call this in an initializer. Do not attempt to use getResources() before the super.onCreate() call in your activity returns.

like image 153
CommonsWare Avatar answered Oct 17 '22 10:10

CommonsWare