getLastNonConfigurationInstance всегда возвращает null


HashMap myMap = (HashMap) getLastNonConfigurationInstance();

MyMap всегда имеет значение null. getLastNonConfigurationInstance() возвращает объект. Моя карта имеет два ключа "символ"и " имя".

public Object onRetainNonConfigurationInstance()
    {
        HashMap myMap = new HashMap();
        myMap.put("symbol", this.symbol);
        final Object data = myMap;
        return data;
    }
3   4   2010-09-04 07:08:28

3 ответа:

Если getLastNonConfigurationInstance() возвращает ненулевой объект, то (HashMap) getLastNonConfigurationInstance() либо вернет тот же объект (если этот объект является HashMap), либо бросит ClassCastException.

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

Убедитесь, что getLastNonConfigurationInstance() действительно возвращает ненулевой объект. Убедитесь, что myMap на самом деле является нулем. Если вы используете отладчик для проверки этих значений, попробуйте вместо этого распечатать их на консоли. Отладчики может лгать вам иногда или, по крайней мере, вводить в заблуждение.

Я столкнулся с той же проблемой. Похоже, вызов getLastNonConfigurationInstance () в любом другом случае, кроме onCreate (), возвращает null. Я переместил оператор в метод onCreate () и voila..it вернула то, что я ожидала увидеть.

Вы не сказали нам, в какой ситуации это происходит? onRetainNonConfigurationInstance() вызывается перед onDestroy () действия, когда происходит изменение конфигурации.