У меня есть демонстрационное приложение, которое поддерживает как смартфоны, так и планшеты.
Также поддерживается изменение ориентации.
На планшетах есть один режим панели и два режима панели.Двухпанельный режим работает только в ландшафтном режиме.Весь пользовательский интерфейс выставлен на фрагменты.
Интерфейс пользователя в двухпанельном режиме является обычным шаблоном мастер-детализации: список слева и подробный экран справа.
Все остальное относится к планшетам при работе в альбомном режиме.
Сценарий:
- Запуск приложения на планшете в ландшафтном режиме
- Выберите статью слева (на второй панели фрагмент по умолчанию будет заменен фрагментом с деталями статьи)
- Изменить ориентацию
- Появится исключение
Проблема, с которой я сталкиваюсь, - это когда происходит изменение ориентации, я получаю исключение.Сообщение об ошибке сообщает об отсутствии FrameLayout с деталями идентификатора - это относится к макету, который должен отображаться только для layout-sw600dp-land
.Для портретного режима есть другая раскладка layout-sw600dp-port
Бизнес-логика точно проверяет текущий режим и в пределах FragmentManager
операций R.id.details
public void show() {
if (isTwoPaneMode()) {
showMain();
showDetailed();
} else {
showMain();
}
}
не приноситна мысль, есть ли какая-нибудь скрытая транзакция на этом R.id.details
, которая не существует для этого варианта использования?