Ich schreibe eine App für 4.0- und 4.1-Tablets, für die ich nicht die Support-Bibliotheken (falls nicht benötigt) verwenden möchte, sondern nur deshalb die 4.x-API.
Meine Zielplattform ist also sehr gut definiert als:> = 4.0 und <= 4.1
Die App verfügt über ein Layout mit mehreren Fenstern (zwei Fragmente, eines links, ein Inhaltsfragment rechts) und eine Aktionsleiste mit Registerkarten.
Ähnlich wie dies:
Durch Klicken auf eine Registerkarte in der Aktionsleiste wird das äußere Fragment geändert, und das innere Fragment ist dann ein Fragment mit zwei verschachtelten Fragmenten (1. kleines Fragment der linken Liste, 2. Fragment mit breitem Inhalt).
Ich frage mich jetzt, was die beste Vorgehensweise ist, um Fragmente und insbesondere verschachtelte Fragmente zu ersetzen. Der ViewPager ist Teil der Support-Bibliothek. Für diese Klasse gibt es keine native 4.x-Alternative. Scheint in meinem Sinne "veraltet" zu sein. - http://developer.android.com/reference/android/support/v4/view/ViewPager.html
Dann habe ich die Versionshinweise für Android 4.2 gelesen ChildFragmentManager
, was gut passt, aber ich ziele auf 4.0 und 4.1 ab, daher kann dies auch nicht verwendet werden.
ChildFragmentManager
ist nur in 4.2 verfügbar
- http://developer.android.com/about/versions/android-4.2.html#NestedFragments
- http://developer.android.com/reference/android/app/Fragment.html#getChildFragmentManager ()
Leider gibt es kaum gute Beispiele, die Best Practices für die Verwendung von Fragmenten ohne die Support-Bibliothek zeigen, selbst in den gesamten Android-Entwicklerhandbüchern. und vor allem nichts in Bezug auf verschachtelte Fragmente.
Ich frage mich also: Ist es einfach nicht möglich, 4.1-Apps mit verschachtelten Fragmenten zu schreiben, ohne die Support-Bibliothek und alles, was dazu gehört, zu verwenden? (Müssen Sie FragmentActivity anstelle von Fragment usw. verwenden?) Oder was wäre die beste Vorgehensweise?
Das Problem, das ich derzeit in der Entwicklung habe, ist genau diese Aussage:
Die Android Support Library unterstützt jetzt auch verschachtelte Fragmente, sodass Sie verschachtelte Fragmentdesigns unter Android 1.6 und höher implementieren können.
Hinweis: Sie können ein Layout nicht in ein Fragment aufblasen, wenn dieses Layout a enthält
<fragment>
. Verschachtelte Fragmente werden nur unterstützt, wenn sie dynamisch zu einem Fragment hinzugefügt werden.
Weil ich die verschachtelten Fragmente in XML definiere, was anscheinend einen Fehler verursacht wie:
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_
Im Moment schließe ich für mich selbst: Selbst in 4.1, wenn ich nicht einmal auf die 2.x-Plattform abzielen möchte, sind verschachtelte Fragmente, wie im Screenshot gezeigt, ohne die Support-Bibliothek nicht möglich.
(Dies ist vielleicht eher ein Wiki-Eintrag als eine Frage, aber vielleicht hat es schon jemand anderes geschafft).
Aktualisieren:
Eine hilfreiche Antwort finden Sie unter: Fragment Inside Fragment
ActionBar
(von Samsung selbst erstellten) App stehen könnten . Schauen Sie sich ActionBarSherlock genauer an. Es enthält die Registerkarten in der ActionBar, wenn Platz vorhanden ist.