Я пишу приложение для таблиц 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
- http://developer.android.com/about/versions/android-4.2.html#NestedFragments
- http://developer.android.com/reference/android/app/Fragment.html#getChildFragmentManager()
К сожалению, вряд ли есть хорошие примеры, показывающие лучшие практики использования фрагментов без библиотеки поддержки даже в руководствах для разработчиков Android; и особенно ничего относительно вложенных фрагментов.
Так что мне интересно: просто ли невозможно писать приложения с вложенными фрагментами без использования библиотеки поддержки и всего, что с ней связано? (нужно использовать FragmentActivity вместо Fragment и т.д.?) Или что было бы лучшей практикой?
Проблема, которую я сейчас имею в разработке, - это именно это утверждение:
Библиотека поддержки Android теперь также поддерживает вложенные фрагменты, поэтому вы могут реализовывать вложенные фрагменты на Android 1.6 и выше.
Примечание. Вы не можете раздувать макет во фрагмент, если этот макет включает a
<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, вложенные фрагменты, как показано на скриншоте, невозможны без поддержки библиотеки.
(Это может быть скорее вики-запись, чем вопрос, но, возможно, кому-то еще это удалось).
Update:
Полезный ответ: Фрагмент внутри фрагмента