Piszę aplikację na tablety 4.0 i 4.1, dla których nie chcę korzystać z bibliotek wsparcia (jeśli nie są potrzebne), ale tylko w związku z tym 4.x api.
Więc moja platforma docelowa jest bardzo dobrze zdefiniowana jako:> = 4.0 i <= 4.1
Aplikacja ma układ wielopanelowy (dwa fragmenty, jeden mały po lewej, jeden fragment treści po prawej) oraz pasek akcji z zakładkami.
Podobne do tego:
Kliknięcie zakładki na pasku akcji zmienia fragment „zewnętrzny”, a fragment wewnętrzny jest fragmentem z dwoma zagnieżdżonymi fragmentami (1. mały fragment lewej listy, 2. szeroki fragment treści).
Zastanawiam się teraz, jaka jest najlepsza praktyka zastępowania fragmentów, a zwłaszcza fragmentów zagnieżdżonych. ViewPager jest częścią biblioteki obsługi, nie ma natywnej alternatywy 4.x dla tej klasy. Wydają się być „zdezaktualizowani” w moim rozumieniu. - http://developer.android.com/reference/android/support/v4/view/ViewPager.html
Następnie przeczytałem informacje o wydaniu dla Androida 4.2, dotyczące tego ChildFragmentManager
, który byłby dobry, ale celuję w 4.0 i 4.1, więc tego też nie można użyć.
ChildFragmentManager
jest dostępny tylko w 4.2
- http://developer.android.com/about/versions/android-4.2.html#NestedFragments
- http://developer.android.com/reference/android/app/Fragment.html#getChildFragmentManager ()
Niestety, nie ma prawie żadnych dobrych przykładów pokazujących najlepsze praktyki dotyczące wykorzystania fragmentów bez biblioteki obsługi, nawet w całych przewodnikach programistów Androida; a zwłaszcza nic odnośnie zagnieżdżonych fragmentów.
Zastanawiam się więc: czy po prostu nie można pisać aplikacji 4.1 z zagnieżdżonymi fragmentami bez korzystania z biblioteki wsparcia i wszystkiego, co się z nią wiąże? (trzeba użyć FragmentActivity zamiast Fragment, itp.?) Albo jaka byłaby najlepsza praktyka?
Problem, który obecnie mam w trakcie opracowywania, to dokładnie to stwierdzenie:
Biblioteka obsługi systemu Android obsługuje teraz również zagnieżdżone fragmenty, dzięki czemu można wdrażać projekty zagnieżdżonych fragmentów w systemie Android 1.6 i nowszych.
Uwaga: nie możesz nadać układu fragmentowi, jeśli ten układ zawiera plik
<fragment>
. Zagnieżdżone fragmenty są obsługiwane tylko wtedy, gdy są dodawane do fragmentu dynamicznie.
Ponieważ umieściłem zdefiniowane zagnieżdżone fragmenty w XML, co najwyraźniej powoduje błąd typu:
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_
W tej chwili konkluzję dla siebie: nawet na 4.1, kiedy nie chcę nawet kierować na platformę 2.x, zagnieżdżone fragmenty, jak pokazano na zrzucie ekranu, nie są możliwe bez biblioteki obsługi.
(W rzeczywistości może to być bardziej wpis wiki niż pytanie, ale może ktoś inny zarządził tym wcześniej).
Aktualizacja:
Pomocna odpowiedź brzmi: Fragment Inside Fragment
ActionBar
(zbudowaną przez firmę Samsung). Przyjrzyj się bliżej ActionBarSherlock, ma zakładki w ActionBar, jeśli jest miejsce.