Я пишу програму для планшетів 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; і особливо нічого щодо вкладених фрагментів.
Тож мені цікаво: чи просто неможливо написати 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, якщо є місце.