So zeigen Sie das ausgewählte Fragment in der Registerkarte Aktionsleiste an

Ich bin vor einer Frage in Bezug auf Tab Swipe. Mein Projekt ist auf Android 3.2 gebaut. Ich verwende Tabulator-Swipe mit Support-Bibliothek 4.0 (android-support-v4.jar). Alles, was implementiert ist, funktioniert gut, aber wenn ich meine App auf ein ICS-Gerät einstelle, dann bekomme ich im Portrait-Modus einen Spinner in der Aktionsleiste für die Tabulatorauswahl. Im Hochformat-Modus ändert sich die Tabulatorauswahl nicht, wenn der Swipe durchgeführt wird, obwohl sich der Inhalt ändert und alles im Querformat funktioniert.

final ActionBar actionBar = getActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); actionBar.setDisplayHomeAsUpEnabled(true); // Set up the ViewPager with the sections adapter. ViewPager mViewPager = (ViewPager) findViewById(R.id.pager); mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(int position) { actionBar.setSelectedNavigationItem(position); } }); 

Ich habe versucht Putting Breakpoint actionBar.setSelectedNavigationItem(position); Auf dieser Linie und sogar im Portrait-Modus wird es angerufen, aber die Auswahl ändert sich nicht.

  • Sind alle Berechtigungen von PhoneGap auf Android benötigt?
  • Wiederverwendung in Fragmenten android ansehen
  • Unterzeichnen eines vorhandenen apks mit debug.keystore, der von eclipse generiert wird
  • Unterschied zwischen Aufgabe und Prozess in Android
  • Segeltuch Pinch-Zoom zu Punkt innerhalb Bounds
  • CoordinatorLayout mit RecyclerView & CollapsingToolbarLayout
  • Kann jemand damit helfen?

    EDITED: Gefunden ein ähnliches Problem aber nicht genau sehen, wie es gelöst ist und wie man es in meinem Code integriert.

  • So öffnen Sie ein Album in der Galerie-App mit einer Absicht
  • Wie kann man zwei Prozesse in Android debuggen?
  • ContentObserver für Kontaktaktualisierung manuell
  • Sw600dp quantifier funktioniert nicht auf Galaxy Tab
  • Google Volley Lib mit authentifizierten Appengine Endpunkten?
  • Was passiert mit einer AsyncTask, wenn die Startaktivität gestoppt / zerstört wird, während sie noch läuft?
  • One Solution collect form web for “So zeigen Sie das ausgewählte Fragment in der Registerkarte Aktionsleiste an”

    Problem: Wegen eines unzureichenden Realzustandes verwendet die Plattform eine kollabierte Navigation (zB Spinner). Das System ermittelt automatisch NAVIGATION_MODE_TABS für die Landschaft & NAVIGATION_MODE_LIST für das Hochformat, das Ändern der Ausrichtung von der Landschaft auf das Porträt aktualisiert die Benutzeroberfläche, aber aus irgendeinem Grund aktualisiert die Navigationsmodus-Eigenschaft nicht auf NAVIGATION_MODE_LIST und daher wird mActionView.setDropdownSelectedPosition (Position) nicht aufgerufen. Siehe den folgenden Code von ActionBarImpl: setSelectedNavigationItem

      public void setSelectedNavigationItem(int position) { switch (mActionView.getNavigationMode()) { case NAVIGATION_MODE_TABS: selectTab(mTabs.get(position)); break; case NAVIGATION_MODE_LIST: mActionView.setDropdownSelectedPosition(position); break; default: throw new IllegalStateException( "setSelectedNavigationIndex not valid for current navigation mode"); } } 

    Workaround-Lösung: Durch Reflexion können wir das Tab Spinner-Objekt erhalten und setSelection-Methode aufrufen.

     private Spinner getTabSpinner() { try { int id = getResources().getIdentifier("action_bar", "id", "android"); View actionBarView = findViewById(id); Class<?> actionBarViewClass = actionBarView.getClass(); Field mTabScrollViewField = actionBarViewClass.getDeclaredField("mTabScrollView"); mTabScrollViewField.setAccessible(true); Object mTabScrollView = mTabScrollViewField.get(actionBarView); if (mTabScrollView == null) { return null; } Field mTabSpinnerField = mTabScrollView.getClass().getDeclaredField("mTabSpinner"); mTabSpinnerField.setAccessible(true); Object mTabSpinner = mTabSpinnerField.get(mTabScrollView); if (mTabSpinner != null) { return (Spinner)mTabSpinner; } } catch (Exception e) { return null; } return null; } 

    Dann rufen Sie die oben genannte Methode in onPageSelected Ereignis an.

      public void onPageSelected(int position) { actionBar.setSelectedNavigationItem(position); Spinner spinner = getTabSpinner(); if (spinner != null) { spinner.setSelection(position); } } 

    Verweise auf diesen Beitrag https://gist.github.com/2657485

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.