У меня есть два метода:
Первый перебирает HashMap<String, String>
(«mWidgetStartConfig»), чтобы установить значения виджетов счетчика во фрагменте. Этот метод всегда вызывается в onResume
.
Второй метод реализует метод обратного вызова onItemSelected
для OnItemSelectedListener
и обновляет значения в другом HashMap<String, String>
(«mWidgetCurrentConfig») в соответствии с тем, какой элемент счетчика был выбран.
Вот методы:
protected void configureWidgets() {
for(String tag : mWidgetStartConfig.keySet()) {
int valueIndex = mSpinnerValues.indexOf(mWidgetStartConfig.get(tag));
((Spinner) mLayout.findViewWithTag(tag)).setSelection(valueIndex);
}
}
public void onItemSelected(AdapterView<?> parent, View v, int pos, long id) {
String tag = (String) v.getTag();
String value = (String) parent.getItemAtPosition(pos);
mWidgetCurrentConfig.put(tag, value);
}
Странная вещь в том, что первый метод работает нормально, пока я ничего не делаю во втором методе (то есть закомментируем тело). Как только я что-то делаю во втором методе, я получаю NullPointerException
в первом методе, когда он называется second time, с тегом String
, равным нулю (первый вызов работает хорошо как-то).
Я действительно не понимаю, почему это происходит, поскольку я вообще не обращаюсь к переменной "mWidgetStartConfig" и не изменяю ее во втором методе. Я также пробовал разные способы итерации по HashMap
- тот же результат.
Любая помощь будет принята с благодарностью!