Android Actionbar Sherlock mit Tabs

Bildbeschreibung hier eingeben

Ich versuche, ActionBar Sherlock mit Tabs unten zu implementieren, wie in der oben genannten Draht-Frame gezeigt.

  • Siehe ActionBarSherlock aus einer Bibliothek
  • Wie bekomme ich sowohl das Icon als auch den Titel der Action in ActionBar?
  • Action Bar Sherlock mit Schaltflächen
  • Programmieren Sie Tabs in Android mit ActionBarSherlock programmgesteuert
  • AAPT fehlgeschlagen mit Fehlercode -1073741819
  • Wie schalte man die blaue Linie unter ActionBar (ActionBarSherlock) aus?
  • Soll ich TabActivity verwenden? – seit ich gesehen habe, dass es veraltet ist. Welches ist der beste Weg, um das gleiche zu erreichen.

  • Wie kann ich Android Facebook Key Hash erstellen?
  • Wie zu wissen, wann Listenansicht beendet ist, laden Sie die Daten auf Android
  • Wie mache ich Rundes Scrollen auf ViewPager?
  • Holen Sie sich den Akkustand, bevor der Broadcast-Receiver auf Intent.ACTION_BATTERY_CHANGED antwortet
  • Finden Sie Abstand zwischen zwei Punkten auf Karte mit Google Map API V2
  • Richtige Weg, um IdlingResource in Espresso Android zu verwenden
  • 2 Solutions collect form web for “Android Actionbar Sherlock mit Tabs”

    Ich habe diese Funktionalität mit einer SherlockFragmentActivity als tabview container und mit SherlockFragment als tabs implementiert. Hier ist eine Skizze (ich habe die üblichen Android-Aktivität gelegt):

    Dies ist die tabview-Aktivität mit zwei tabs:

     public class TabViewActivity extends SherlockFragmentActivity { // store the active tab here public static String ACTIVE_TAB = "activeTab"; @Override public void onCreate(Bundle savedInstanceState) { .. final ActionBar actionBar = getSupportActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); // add the first tab which is an instance of TabFragment1 Tab tab1 = actionBar.newTab() .setText("TabTitle1") .setTabListener(new TabListener<TabFragment1>( this, "tab1", TabFragment1.class)); actionBar.addTab(tab1); // add the second tab which is an instance of TabFragment2 Tab tab2 = actionBar.newTab() .setText("TabTitle2") .setTabListener(new TabListener<TabFragment2>( this, "tab2", TabFragment2.class)); actionBar.addTab(tab2); // check if there is a saved state to select active tab if( savedInstanceState != null ){ getSupportActionBar().setSelectedNavigationItem( savedInstanceState.getInt(ACTIVE_TAB)); } } @Override protected void onSaveInstanceState(Bundle outState) { // save active tab outState.putInt(ACTIVE_TAB, getSupportActionBar().getSelectedNavigationIndex()); super.onSaveInstanceState(outState); } } 

    Und das ist das TabFragment , das den Inhalt eines Tabs enthält:

     public class TabFragment extends SherlockFragment { // your member variables here @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view = inflater.inflate(R.layout.fragment_va_esh, container, false); ... // do your view initialization here return view; } } 

    Und schließlich ist dies der TabListener , der die Tabulatoren TabListener :

     public class TabListener<T extends Fragment> implements ActionBar.TabListener{ private TabFragment mFragment; private final Activity mActivity; private final String mTag; private final Class<T> mClass; public TabListener(Activity activity, String tag, Class<T> clz) { mActivity = activity; mTag = tag; mClass = clz; } public void onTabSelected(Tab tab, FragmentTransaction ft) { // Check if the fragment is already initialized if (mFragment == null) { // If not, instantiate and add it to the activity mFragment = (TabFragment) Fragment.instantiate( mActivity, mClass.getName()); mFragment.setProviderId(mTag); // id for event provider ft.add(android.R.id.content, mFragment, mTag); } else { // If it exists, simply attach it in order to show it ft.attach(mFragment); } } public void onTabUnselected(Tab tab, FragmentTransaction ft) { if (mFragment != null) { // Detach the fragment, because another one is being attached ft.detach(mFragment); } } public void onTabReselected(Tab tab, FragmentTransaction ft) { // User selected the already selected tab. Usually do nothing. } } 

    Ich glaube, dass TabActivity zugunsten der Verwendung von Fragmenten veraltet ist – nicht weil die Tab-Navigation ein veraltetes Konzept ist. Verwenden Sie einfach Fragmente und ein TabWidget.

    Auch hier ist eine ähnliche Frage .

    Bearbeiten:

    Hier ist ein Beispiel mit freundlicher Genehmigung von Google: Android Tabs der Fragment Way

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