La meilleure pratique pour la navigation par onglets?

Je cherche la meilleure pratique d'utilisation de la navigation par onglets avec la barre d'action Sherlock. Quelle est la bonne façon de changer les fragments, et d'ajouter des fragments à la couche arrière et de supprimer la pile arrière lorsqu'un autre onglet est sélectionné.

Y a-t-il de bons exemples ou des projets open source montrant comment le faire correctement?

  • Android: C'est une bonne pratique pour obtenir un contexte de manière statique?
  • Bibliothèque avec dépendances de paquets (Fat Aar)
  • L'erreur Google Play lors d'un achat lors de la mise en œuvre du plugin Soomla Unity3d
  • Android openGL ES glDrawArrays ou glDrawElements?
  • Comment tester un projet de bibliothèque Android
  • Service Android interagissant avec plusieurs activités
  • Utilisation de SurfaceTexture en combinaison avec RenderScript
  • Directions API sur Android
  • Comment spécifiez-vous dans AndroidManifest.xml que vous souhaitez interdire l'installation sur des périphériques inférieurs à un périphérique de 4,7 pouces?
  • Schéma de base de données Android Sqlite
  • Comment inclure un booléen dans une clause sql lite où
  • Chargement de grandes images sans OutOfMemoryError
  • 4 Solutions collect form web for “La meilleure pratique pour la navigation par onglets?”

    Je n'utiliserais pas ABS directement pour le faire. Vous allez rencontrer des problèmes lorsque vos onglets nécessitent une commutation de fragments, etc. Je pense que la bonne approche consiste à utiliser ViewPagerIndicator, qui est compatible avec l'ABS. Comme bonus, vous obtenez également le glissement de droite-gauche entre les onglets. Vous avez besoin du paquet compat (comme pour ABS), l'utilisation d'exemple que vous pouvez trouver dans le dossier d'échantillons .

    Comme Edgar l'a mentionné, le guide de navigation Android est un bon endroit pour commencer. Mais permettez-moi d'ajouter quelques commentaires sur la façon dont les onglets sont destinés à fonctionner avec Android.

    Les nouveaux onglets d'acitonbar doivent être mis en œuvre de la même manière qu'il fonctionne dans l'application google play. Cela signifie dès que vous souhaitez que certains détails de certains contenus se trouvent dans un onglet, vous allez à une nouvelle vue / fragment / activité et les onglets disparaîtront.

    Donc les onglets pour Android ne devraient pas être visibles tout le temps mais seulement dans la hiérarchie supérieure. Si vous souhaitez faciliter la navigation pour l'utilisateur, vous implémenterez le bouton haut afin que l'utilisateur puisse rapidement revenir à la hiérarchie supérieure, où les onglets sont visibles.

    Didacticiel et échantillons

    Mon exemple préféré personnel et votre tutoriel est le tutoriel des onglets sous le tutoriel de la barre d'action sur la page de googles.

    Des exemples de navigation par onglet peuvent également être trouvés dans le projet d'échantillonnage fourni avec android-sdk. Accédez à: android-sdk\extras\android\support\samples\Support4Demos\src\com\example\android\supportv4\app Et cherchez: FragmentTabs.java ou FragmentTabsPager.java .

    Si vous souhaitez utiliser ActionBarSherlock, vous pouvez également télécharger ActionBarSherlock et regarder le dossier d'échantillons dans le répertoire / samples. Dans ce cas, vous avez des démo de tabulation dans TabNavigation.java et TabNavigationCollapsed.java . Bien que je pense que vous devriez donner un tutoriel à la barre d'action.

    Tabs avec pile arrière

    Nous vous disons également que vous souhaitez avoir une barre d'onglets visible tout au long ( bien qu'elle ne soit pas recommandée ). Ensuite, vous devez créer une pile de sauvegarde personnalisée pour chaque onglet. Vous pouvez rechercher ici un exemple de mise en œuvre.

    Cartes et onglets

    Jetez un oeil à toutes les applications Googles qui utilisent Map. Google utilise les boutons de la barre d'action de débordement pour naviguer avec. Alors devrions-nous, en tant que développeurs, avec Google mapsv2 pour les onglets Android avec des cartes, est devenu beaucoup plus facile si quelqu'un le souhaiterait.

    J'ai fait ActionbarSherlock avec des fragments et des onglets à plusieurs reprises et fonctionne merveilleusement.

    Vous avez besoin d'un TabListener:

     import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import com.actionbarsherlock.app.ActionBar; import com.actionbarsherlock.app.ActionBar.Tab; import com.android.wifilogger.R; public class WifiTabListener implements ActionBar.TabListener { public Fragment fragment; public MainTabActivity act; public WifiTabListener(Fragment fragment, MainTabActivity act) { this.fragment = fragment; this.act = act; } @Override public void onTabSelected(Tab tab, FragmentTransaction ft) { ft.replace(R.id.root, fragment); } @Override public void onTabUnselected(Tab tab, FragmentTransaction ft) { ft.remove(fragment); } @Override public void onTabReselected(Tab tab, FragmentTransaction ft) { } } 

    Et la configuration de votre TabActivity:

     public class MainTabActivity extends SherlockFragmentActivity { public ActionBar actionBar; private ActionBar.Tab listTab; public MenuItem refreshItem; private SherlockFragment listFragment; private SherlockFragment mapFragment; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // getActionBar().setDisplayHomeAsUpEnabled(true); actionBar = getSupportActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); setContentView(R.layout.main); ActionBar.Tab settingsTab = actionBar.newTab().setText("Settings") .setTag("settings"); listTab = actionBar.newTab().setText("Wifi List") .setTag("list"); ActionBar.Tab mapTab = actionBar.newTab().setText("Map").setTag("map"); SherlockFragment settingsFragment = new SettingsFragment(); listFragment = new WifiListFragment(); mapFragment = new WifiMapFragment(); settingsTab.setTabListener(new WifiTabListener(settingsFragment, this)); listTab.setTabListener(new WifiTabListener(listFragment, this)); mapTab.setTabListener(new WifiTabListener(mapFragment, this)); actionBar.addTab(listTab,false); actionBar.addTab(mapTab,false); actionBar.addTab(settingsTab,false); actionBar.selectTab(listTab); } 

    Où vous devez modifier SettingsFragment, MapFragment et ListFragment dans vos propres fragments. Vous pouvez également ajouter un DialogFragment dans l'un de ces tabfragments en utilisant setTargetFragment mais ce n'est pas votre question, je suppose.

    Je vous recommande de suivre les modèles de conception Android pour la navigation:

    http://developer.android.com/design/patterns/navigation.html

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.