Android - Java HashMap keySet неожиданно возвращает ноль - PullRequest
1 голос
/ 09 марта 2012

У меня есть два метода:
Первый перебирает 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 - тот же результат.

Любая помощь будет принята с благодарностью!

...