Sto scrivendo un'app per tablet 4.0 e 4.1, per la quale non voglio utilizzare le librerie di supporto (se non necessarie) ma solo l'api 4.x quindi.
Quindi la mia piattaforma di destinazione è molto ben definita come:> = 4.0 e <= 4.1
L'app ha un layout multi-riquadro (due frammenti, uno piccolo a sinistra, un frammento di contenuto a destra) e una barra delle azioni con schede.
Simile a questo:
Facendo clic su una scheda nella barra delle azioni si modifica il frammento "esterno" e il frammento interno diventa quindi un frammento con due frammenti nidificati (1. piccolo frammento di elenco a sinistra, 2. ampio frammento di contenuto).
Ora mi chiedo quale sia la migliore pratica per sostituire i frammenti e in particolare i frammenti nidificati. ViewPager fa parte della libreria di supporto, non esiste un'alternativa 4.x nativa per questa classe. Sembra essere "deprecato" nel mio senso. - http://developer.android.com/reference/android/support/v4/view/ViewPager.html
Quindi ho letto le note di rilascio per Android 4.2, a proposito ChildFragmentManager
, che sarebbe una buona misura, ma sto prendendo di mira 4.0 e 4.1, quindi non può essere utilizzato neanche questo.
ChildFragmentManager
è disponibile solo in 4.2
- http://developer.android.com/about/versions/android-4.2.html#NestedFragments
- http://developer.android.com/reference/android/app/Fragment.html#getChildFragmentManager ()
Sfortunatamente, non ci sono quasi buoni esempi là fuori che mostrano le migliori pratiche per l'utilizzo di frammenti senza la libreria di supporto, anche nelle intere guide per sviluppatori Android; e soprattutto niente per quanto riguarda i frammenti annidati.
Quindi mi chiedo: semplicemente non è possibile scrivere app 4.1 con frammenti nidificati senza utilizzare la libreria di supporto e tutto ciò che viene fornito con essa? (è necessario utilizzare FragmentActivity invece di Fragment, ecc.?) O quale sarebbe la migliore pratica?
Il problema che sto attualmente riscontrando nello sviluppo è esattamente questa affermazione:
La libreria di supporto Android ora supporta anche i frammenti nidificati, quindi puoi implementare progetti di frammenti nidificati su Android 1.6 e versioni successive.
Nota: non è possibile espandere un layout in un frammento quando tale layout include un file
<fragment>
. I frammenti nidificati sono supportati solo se aggiunti dinamicamente a un frammento.
Perché ho messo definire i frammenti nidificati in XML, che apparentemente causa un errore come:
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_
Al momento, concludo da solo: anche su 4.1, quando non voglio nemmeno targetizzare la piattaforma 2.x, i frammenti nidificati come mostrato nello screenshot non sono possibili senza la libreria di supporto.
(Questa potrebbe effettivamente essere più una voce wiki che una domanda, ma forse qualcun altro l'ha gestita prima).
Aggiornare:
Una risposta utile è a: Fragment Inside Fragment
ActionBar
(costruita in casa da Samsung). Dai un'occhiata più da vicino ad ActionBarSherlock, ha le schede nell'ActionBar se c'è spazio.