Ich verwende ActionBarSherlock und Anwendung this pattern für die Tab-Navigation, die ich auf Android-Entwickler-Website gefunden habe. Es funktioniert ziemlich gut, aber ich möchte auch in der Lage sein, zwischen NAVIGATION_MODE_TABS
und NAVIGATION_MODE_LIST
zu wechseln, wobei die Verbindung zwischen den Tabs und den Fragmenten erhalten bleibt.Wechseln zwischen Registerkartennavigation und Listennavigation
Das Muster, das ich oben erwähnt habe, ist ziemlich gut für die Erhaltung eines generischen Codes. So füge ich Zuhörer auf meine Tabs und verknüpfen sie mit spezifischen Fragmente wie folgt aus:
bar.addTab(bar.newTab()
.setText("MyFragment")
.setTabListener(new TabListener<SomeFragment>(this, "myfargment", SomeFragment.class)));
und das Fragment instanziiert, wenn das zugehörige Register mit Hilfe von Generika geklickt wird:
public void onTabSelected(Tab tab, FragmentTransaction ft) {
if (mFragment == null) {
mFragment = Fragment.instantiate(mActivity, mClass.getName(), mArgs);
ft.add(android.R.id.content, mFragment, mTag);
} else {
ft.attach(mFragment);
}
}
Meine Frage ist, Wie kann ich einen ähnlichen Weg erreichen, während Navigieren zwischen meinen Fragmenten mit der Listennavigation Modus. Ich konnte einen ähnlichen Weg nicht finden, da die OnNavigationListener
für die Liste auf der ActionBar für die ganze Liste anstelle von pro Stück Basis wie der Tablistener funktioniert.
oder muss ich, so etwas zu tun haben:
@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
switch (itemPosition) {
case 0:
//Replace the current fragment with FragmentA
break;
case 1:
//Replace the current fragment with FragmentB
break;
case 2:
//Replace the current fragment with FragmentC
break;
default:
break;
}
return true;
}
EDIT:
ich ein interessantes Verhalten bemerkt haben: Während die Navigationsmodus-NAVIGATION_MODE_TABS
gesetzt, wenn ich gesetzt mein Telefon in Landschaft Modus wandelt es die Registerkarten in eine Liste und Preservers die Verbindung zwischen den Fragmen ts und die Listenelemente (welche waren Registerkartenelemente vor) Wie kann ich dieses Ergebnis erreichen auf Anfrage statt auf Orientierungsänderung?