Я пишу приложение для планшетов 4.0 и 4.1, для которых я не хочу использовать вспомогательные библиотеки (если они не нужны), а только поэтому API 4.x.
Итак, моя целевая платформа очень хорошо определена как:> = 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 почти нет хороших примеров, демонстрирующих передовые методы использования фрагментов без библиотеки поддержки; и особенно ничего о вложенных фрагментах.
Поэтому мне интересно: просто ли невозможно писать приложения 4.1 с вложенными фрагментами без использования библиотеки поддержки и всего, что с ней связано? (нужно использовать FragmentActivity вместо Fragment и т. д.?) Или что было бы лучше всего?
Проблема, с которой я сейчас сталкиваюсь в разработке, заключается в следующем:
Библиотека поддержки 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, вложенные фрагменты, как показано на скриншоте, невозможны без библиотеки поддержки.
(На самом деле это может быть больше вики-статья, чем вопрос, но, возможно, кто-то еще справился с этим раньше).
Обновить:
Полезный ответ: Фрагмент внутри фрагмента
ActionBar
(встроенной компанией Samsung). Присмотритесь к ActionBarSherlock, у него есть вкладки в ActionBar, если есть место.