У меня возникли проблемы, обертывая голову тем, как правильно управлять Fragment
в типичном шаблоне шаблона списка.
Мой макет отлично работает и структурирован так для пейзажного вида (двойная панель):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout ... >
<FrameLayout android:id="@+id/list" ... />
<FrameLayout android:id="@+id/container" ... />
</LinearLayout>
И как это для портретного вида (одно окно):
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout android:id="@+id/container" ... />
У меня также есть refs.xml
в res/values-w600dp/
, чтобы убедиться, что соответствующий макет загружен на основе ширины экрана устройства.
Когда элемент списка выбран, в альбомном представлении должен отображаться список и детали бок о бок, в то время как портретный портрет должен показывать только полноэкранный режим. Когда ничего не было выбрано, в альбомном представлении должны быть слева слева и пустое пространство справа, а портретный вид должен показывать только полный список в списке.
Однако здесь, где у меня возникают проблемы:
-
Я использую "основной"
Activity
для списка + дополнительный макет детали и еще одну "информацию"Activity
для портрета, только для макета? Это похоже на то, что делает Fragments guide. Я получил этот подход для работы в целом, но как мне сохранить состояние фрагмента моих деталей при изменении ориентации?Рассмотрим обратный пример, показанный выше - поворот с портрета на пейзаж, пока детали видны, значит, детали
Activity
должны бытьfinish()
ed, поэтому основнойActivity
может отображать двухпанельный макет, но это также разрушает фрагмент деталей и егоsavedInstanceState
. Если пользователь набрал информацию в поляEditText
в фрагменте детали, затем поворачивает устройство, как мне сохранить все состояние пользовательского интерфейса фрагмента детали, когда я добавляю его на основную (двухпанельную)Activity
? -
Я использую только один
Activity
и сам управляюFragment
? Это позволяет мне сохранять состояние пользовательского интерфейса деталей, когда меняется ориентация (поскольку Android позаботится об этом автоматически), но он становится беспорядочным, когда дело доходит до заднего стека.Рассмотрим случай на изображении - поворот от пейзажа к портрету, когда детали будут видны, должен показать отображение деталей с одной панелью, но как правильно управлять задним стеком и
ActionBar
домашним значком, чтобы отобразить список одиночный -pane? Поворот назад к пейзажу также должен был бы отменить все предыдущие операции со стеклом, так как оба фрагмента будут видны сразу.
После нескольких поисков я нашел два похожих вопроса (Переключение с двойной панели на одиночную панель смены ориентации, поддерживающей фрагмент фрагмента и Сохранять состояние фрагмента между действиями), но моя ситуация немного отличается, потому что я не пытаюсь модифицировать эту функциональность, но лучше всего планирую ее. Что мне не хватает? Разумеется, Android может управлять как задним стеком (как в случае с несколькими Activity
) , так и состоянием пользовательского интерфейса (как в случае с одним случаем Activity
) сразу?