2014-11-13 5 views
0

КОНСТРУКЦИЯФрагмент и фрагмент на BackStack

Activity AFragment A держит, который способен добавить Fragment B на backstack.

ПРОБЛЕМА

Fragment B держит Views генерируется с помощью ответа API. Состояние Views - это то, что мне нужно, чтобы иметь возможность воссоздать после вращения или вернуться к Fragment A с помощью onBackPressed и завтракать Fragment B.

Я прочитал несколько тем о SO около Fragments в backstack, и я знаю о их неспособности сохранить экземпляр.

Что мне делать для достижения такого результата?

+0

использовать 'onSaveInstanceState (Bundle outState)' и запускать новый фрагмент с помощью hide + add. –

ответ

3

Fragments на задней стоге всегда можно сохранить экземпляр, если вы его сохраните. Activity или Fragment в стопке в просто приостановленном состоянии. Поэтому вы хотите сохранить данные/переменные в методе onSaveInstanceState для этого класса (вы его переопределите).

Теперь для восстановления сохраненного состояния, вы бы заметили, что onCreate, onCreateView для деятельности, фрагмент, соответственно, имеет Bundle savedInstanceState параметр, передаваемый в. Здесь вы сохранили свое состояние на предыдущем шаге, таким образом, вы может добавить

if (savedInstanceState != null) { //TODO: restore the state }

к вашему OnCreate/onCreateView метод, и вы должны быть хорошо идти.

+1

Эта ссылка может помочь: http://stackoverflow.com/questions/15313598/once-for-all-how-to-correctly-save-instance-state-of-fragments-in-back-stack – mistwalker

+0

Эта ссылка была действительно полезно, но я до сих пор не знаю, как сохранить эти макеты. Проблема в том, что некоторые из них - это коммутаторы, EditTexts, CheckBox, как мне сохранить такие данные? Большинство из них находятся внутри дополнительных контейнеров (LinearLayout). – JakubW

+0

Способ сделать это - сохранить состояние данных, которые они отображали (например, переключатель выбран или не выбран, LinearLayout/RelativeLayout содержит дочерний вид или нет, и если он делает, то какой из них, какой цвет в настоящее время показывая, является ли это переменным значением в вашем случае). Вы можете сохранить эти данные в файле savedInstanceState, а затем перерисовать свою активность/фрагмент с этой конфигурацией. – mistwalker