-1

Почему я получаю NPE, когда Activity уже создан/context уже инициализирован?Почему я получаю NullPointerException в `getResources(). GetStringArray()` пока активность уже создана?

ОБЪЯСНЕНИЕ:

Я внутри onActivityCreated метода фрагмента, который обеспечивает Activity уже создан, и, таким образом, context уже инициализирован. Я получаю ресурсы приложения, как:

Log.i выше утверждение отпечатков

APPRESOURCES >>> [email protected] 

Внутри populateList(appResources) метод, называемый выше, я создаю объект MyParentObject и передать appResources в конструктор:

private List<ParentObject> populateList(Resources appResources) { 
     ... 
     MyParentObject myParentObject = new MyParentObject(appResources); 
     ... 
} 

В MyParentObject классе

public class MyParentObject implements ParentObject { 
     Resources appResources;  
     ... 
     public MyParentObject(Resources appResources) {   
      this.appResources = appResources; 
     } 
     ...  
     private String [] spinnerFields = appResources.getStringArray(R.array.spinnerFields_arrayResource);//******ERROR******** 
     ... 
    } 

Оператор, который присваивает spinnerFields где я получаю NPE.


Примечание: Первоначально я проходил вокруг context объекта, полученного из getActivity() в onActivityCreated() фрагмента. Но в процессе отладки для этого NPE я перешел на обход объекта appResources.

+1

На какой линии вы получаете сообщение об аварии? – Blackbelt

+1

Основы java ... что происходит первым? конструктор или инициализатор поля? http://ideone.com/vLmnVW – Selvin

+0

@Blackbelt В последнем фрагменте, последнее утверждение! Тот, который присваивает 'spinnerFields'. Я добавил '// ******** ERROR ***************' к нему. – Solace

ответ

0

Кредит этого решения относится к замечанию Сельвина. Поле должно быть объявлено перед конструктором, а затем я инициализировал его внутри конструктора, например:

public class MyParentObject implements ParentObject { 
     private String [] spinnerFields;  
     ... 
     public MyParentObject(Resources appResources) {   
      spinnerFields = appResources.getStringArray(R.array.spinnerFields_arrayResource); 
     } 
     ...  
} 

 Смежные вопросы

  • Нет связанных вопросов^_^