У меня есть два действия A и B. У A есть ListFragment, который использует LoaderManager, тогда как активность B показывает детали элемента, выбранного в ListFragment. Я только что заметил, что, когда я использую кнопку "Назад", чтобы перейти от B к A, положение в Хранилище ListFragment, но когда я использую кнопку "вверх" (левая точка) в панели действий, действие A воссоздается, и поэтому позиция в виде списка теряется.
Я хотел бы исправить эту проблему, но я не уверен, как правильно это сделать.
Я придумываю такие решения:
a) Используйте onBackPressed()
Замените реализацию по умолчанию для android.R.id.home
(кнопка панели действий вверх) в операции B, а вместо функции NavUtils.navigateUpFromSameTask(this)
вызовите метод активности onBackPressed()
. Я протестировал его, и он работает.
b) Продолжайте использовать NavUtils.navigateUpFromSameTask(this)
Но реализуйте позицию onSaveInstanceState
и restore listView во время onCreate
метода ListFragment, используемого активностью A. (Я еще не тестировал этот подход)
Какое из этих решений лучше? Или есть ли другое (гораздо более лучшее) решение?
Решение a) довольно прост и прямолинейно, но b), вероятно, лучше, потому что используется стандартная реализация up caret.
Любые идеи приветствуются. Спасибо.