Лучшие практики для вложенных фрагментов в Android 4.0, 4.1 (<4.2) без использования библиотеки поддержки
Пишу приложение для планшетов 4.0 и 4.1, для которогоЯ не хочу использовать библиотеки поддержки (если не нужно) но 4.x api только поэтому.
Так что моя целевая платформа очень хорошо определена как:> = 4.0 и <= 4.1
Приложение имеет многопанельный макет (два фрагмента, один маленький слева, один фрагмент контента справа) и панель действий с вкладками.
Похоже на это:
Нажатие на вкладку на панели действий изменяет «внешний» фрагмент, и внутренний фрагмент затем становится фрагментом с двумя вложенными фрагментами (1. маленький фрагмент списка слева, 2. фрагмент широкого содержимого).
Теперь мне интересно, как лучше заменить фрагменты и особенно вложенные фрагменты. ViewPager является частью библиотеки поддержки, для этого класса нет собственной альтернативы 4.x. Похоже, «устарела» в моем смысле. -http://developer.android.com/reference/android/support/v4/view/ViewPager.html
Затем я прочитал заметки о выпуске для Android 4.2, касающиесяChildFragmentManager
, что было бы хорошо, но я нацеливаюсь на 4.0 и 4.1, так что это тоже нельзя использовать.
ChildFragmentManager
доступно только в 4.2
К сожалению, вряд ли найдутся хорошие примеры, демонстрирующие лучшие практики использования фрагментов без библиотеки поддержки, даже во всех руководствах разработчиков Android; и особенно ничего о вложенных фрагментах.
Поэтому мне интересно: неужели просто невозможно написать приложения 4.1 с вложенными фрагментами без использования библиотеки поддержки и всего, что с ней идет? (необходимо использовать FragmentActivity вместо Fragment и т. д.?) Или что было бы лучшей практикой?
Проблема, которую я сейчас испытываю при разработке, заключается именно в этом утверждении:
http://developer.android.com/about/versions/android-4.2.html#NestedFragmentsБиблиотека поддержки Android также теперь поддерживает вложенные фрагменты, так что вы можете реализовать проекты с вложенными фрагментами на Android 1.6 и выше.
Примечание. Вы не можете раздувать макет на фрагмент, если этот макет содержит<fragment>
, Вложенные фрагменты поддерживаются только при динамическом добавлении к фрагменту.
Потому что я положил определение вложенных фрагментов в XML, что, по-видимому, вызывает ошибку вроде:
Caused by: java.lang.IllegalArgumentException: Binary XML file line #15: Duplicate id 0x7f090009, tag frgCustomerList, or parent id 0x7f090008 with another fragment for de.xyz.is.android.fragment.CustomerListFragment_
На данный момент я делаю выводы для себя: даже в 4.1, когда я даже не хочу ориентироваться на платформу 2.x, вложенные фрагменты, как показано на скриншоте, невозможны без библиотеки поддержки.
(На самом деле это может быть больше вики, чем вопрос, но, возможно, кто-то еще справился с этим раньше).
Обновить:
Полезный ответ:Фрагмент внутри фрагмент