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; } 

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

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

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

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

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