Я пишу приложение для планшетов 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, вложенные фрагменты, как показано на скриншоте, невозможны без библиотеки поддержки.
(На самом деле это может быть больше вики-статья, чем вопрос, но, может быть, кому-то это уже удавалось раньше).
Обновление:
Полезный ответ находится по адресу: Фрагмент внутри фрагмента
ActionBarSherlock
. Мне нужно было бы использовать ActionBarSherlock, но тогда вкладки не будут интегрированы в ActionBar, а только под ним (что не обязательно для 4.x). - вы уверены в этом? Из того, что я видел, использование библиотеки полностью воспроизводит API SDK, включая эти вкладки. - person user   schedule 25.03.2013ActionBar
(встроенной в Samsung). Присмотритесь к ActionBarSherlock, у него есть вкладки в ActionBar, если есть место. - person user   schedule 25.03.2013