Вызов context.getResources() возвращает null

Итак, я пытаюсь получить строковый ресурс в своем проекте, но когда я вызываю context.getResources().getString(...), я получаю NullPointerException. В режиме отладки я обнаружил, что контекст не нулевой, но посмотрев на его элементы, я обнаружил, что mResources был нулевым. Почему ресурсы не загружаются для контекста активности?

ИЗМЕНИТЬ

Видимо, это и вызвало 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);
    }
}

Мне пришлось перенести инициализацию someClass после super.onCreate(), как было предложено CommonsWare. Спасибо.


person Olayinka    schedule 23.06.2014    source источник
comment
Как вы создали экземпляр активности, которую используете в качестве контекста? Где именно в жизненном цикле активности вы вызываете getResources()?   -  person laalto    schedule 23.06.2014
comment
Вы уверены, что передаете правильный идентификатор, принадлежащий String.xml?   -  person Abhishek Shukla    schedule 23.06.2014
comment
@laalto создать экземпляр типа onCreate?   -  person Olayinka    schedule 23.06.2014
comment
Создайте экземпляр, как при создании объекта класса. Это сделал фреймворк или вы использовали new сами?   -  person laalto    schedule 23.06.2014


Ответы (1)


Если бы мне пришлось угадывать, вы пытаетесь вызвать это в инициализаторе. Не пытайтесь использовать getResources() до тех пор, пока не вернется вызов super.onCreate() в вашей активности.

person CommonsWare    schedule 23.06.2014
comment
Проблема решена. Спасибо. У меня есть член в действии, которое инициализируется по умолчанию, и я пытался вызвать метод из его конструктора. - person Olayinka; 23.06.2014