Skip to content

14 juillet 2010 | Rédigé par Axon

56

Utiliser les TabLayout [Tutoriel Android n°10]

Les TabLayout pour ceux qui ne connaissent pas, se sont des onglets permettant d’afficher facilement différentes informations en fonction de l’onglet sélectionné. Lorsque j’ai voulu utiliser un TabLayout j’ai naturellement suivi le tuto de Google, mais je peux vous dire qu’il m’en a fait « baver » (excusez moi de l’expression).

Alors s’il m’a causé tant de peine c’est bien évidemment parce qu’il ne fonctionnait pas. A cause d’un léger oublie de la part de Google, des heures de recherche pour finalement s’apercevoir qu’il manquait simplement trois lignes. Les développeurs confirmés diront que c’était évident, mais ça ne l’est pas tant que ça lorsque l’on est débutant.

Bon fini le blabla, entrons dans le vif du sujet. Alors je ne vais pas refaire tout le tuto de Google se serait un peu idiot donc je vous laisse vous y rendre ici. Une fois que vous aurez fini toutes les étapes revenez sur Tuto Mobile (et oui sinon ça ne marchera pas… ;) )

Ce qu’il faut ajouter

Maintenant ouvrez le fichier AndroidManifest.xml et ajoutez ces trois misérables petites lignes entre les balises <application> :

<activity android:name=".ArtistsActivity"></activity>
<activity android:name=".AlbumsActivity"></activity>
<activity android:name=".SongsActivity"></activity>

Se sont les trois Activity que vous avez créé précédemment. Si vous ne les déclarez pas dans le fichier AndroidManifest.xml, l’application ne saura pas les trouver et vous retournera l’erreur : ActivityNotFoundException. Enfin voilà maintenant tout devrait fonctionner.

Cacher la barre de titre d’une application

Je voulais également revenir sur le bout de code nécessaire pour cacher la barre de titre d’une application, qui peut s’avérer bien utile pour certaines applications. Donc pour mémo je l’écris de nouveau, il suffit d’insérer dans le fichier AndroidManifest.xml la ligne suivante :

<activity android:name=".LeNomDeVotreActivityPrincipale"
          android:label="@string/app_name"
          android:theme="@android:style/Theme.NoTitleBar">

Enfin, c’est surtout la ligne android:theme= »@android:style/Theme.NoTitleBar » qui permet de cacher la barre de titre.

Voilà pour aujourd’hui, un tuto Android très simple mais qui peut en aider plus d’un.

Découvrez d'autre articles de la catégorie Tutoriels Android

Encore un peu de lecture :

56 Commentaires Poster un commentaire
  1. Latitude
    6 jan 2012

    bonjour, merci pour le tuto ça marche parfaitement, mais j’ai un petit problème.

    En fait, j’ai 4 tabHost qui lancent chacun 1 activity. jusque là tout marche très bien.

    mais le problème est que dans chacune de ces acticity, je dois lancer d’autres activity (ou sous-activity) qui n’ont pas leur label (ou icones) sur les tabHost. Alors comment faire pour gader les tabHost là où ils sont quand je me promène dans les sous-activity?

    voici mon code:

    Voici ma classe main qui aide à lancer les 4 Activity:

    public class Tabwidget extends TabActivity {

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Resources res = getResources();
    TabHost tabHost = getTabHost();
    TabHost.TabSpec spec;
    Intent intent;

    intent = new Intent().setClass(this, Activity1.class);
    spec = tabHost.newTabSpec(« Activity1″).setIndicator(« Activity1″, res.getDrawable(R.drawable.Activity1)).setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, Activity2.class);
    spec = tabHost.newTabSpec(« Activity2″).setIndicator(« Activity2″, res.getDrawable(R.drawable.Activity2)).setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, Activity3.class);
    spec = tabHost.newTabSpec(« Activity3″).setIndicator(« Activity3″, res.getDrawable(R.drawable.Activity3)).setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, Activity4.class);
    spec = tabHost.newTabSpec(« Activity4″).setIndicator(« Activity4″, res.getDrawable(R.drawable.Activity4)).setContent(intent);
    tabHost.addTab(spec);

    tabHost.setCurrentTab(0);
    }
    }

    et voici ce qui se passe dans l’une des activity, prennons Activity1 par exemple:

    public class Activity1 extends Activity implements OnClickListener{

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity1);

    Button sub_activity_1_btn = (Button) findViewById(R.id.sub1);
    sub_activity_1_btn.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
    startActivity(new Intent(« com.subActivity1″));
    }
    });

    Button sub_activity_2_btn = (Button) findViewById(R.id.sub2);
    sub_activity_2_btn.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
    startActivity(new Intent(« com.subActivity2″));
    }
    });

    }

    public void onClick(View v) {

    }
    }

    là mon activity1 a 2 boutons pour aller à subActivity1 et subActivity2.

    Main quand je clique sur un de ces boutons, le tabWidget disparait (ce qui est logique) mais comment fait-on pour qe ça ne disparait pas.

    Merci.

  2. Latitude
    6 jan 2012

    bonjour, merci pour le tuto ça marche parfaitement, mais j’ai un petit problème.

    En fait, j’ai 4 tabHost qui lancent chacun 1 activity. jusque là tout marche très bien.

    mais le problème est que dans chacune de ces acticity, je dois lancer d’autres activity (ou sous-activity) qui n’ont pas leur label (ou icones) sur les tabHost. Alors comment faire pour gader les tabHost là où ils sont quand je me promène dans les sous-activity?

    voici mon code:

    Voici ma classe main qui aide à lancer les 4 Activity:

    public class Tabwidget extends TabActivity {

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Resources res = getResources();
    TabHost tabHost = getTabHost();
    TabHost.TabSpec spec;
    Intent intent;

    intent = new Intent().setClass(this, Activity1.class);
    spec = tabHost.newTabSpec(« Activity1″).setIndicator(« Activity1″, res.getDrawable(R.drawable.Activity1)).setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, Activity2.class);
    spec = tabHost.newTabSpec(« Activity2″).setIndicator(« Activity2″, res.getDrawable(R.drawable.Activity2)).setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, Activity3.class);
    spec = tabHost.newTabSpec(« Activity3″).setIndicator(« Activity3″, res.getDrawable(R.drawable.Activity3)).setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, Activity4.class);
    spec = tabHost.newTabSpec(« Activity4″).setIndicator(« Activity4″, res.getDrawable(R.drawable.Activity4)).setContent(intent);
    tabHost.addTab(spec);

    tabHost.setCurrentTab(0);
    }
    }

    et voici ce qui se passe dans l’une des activity, prennons Activity1 par exemple:

    public class Activity1 extends Activity implements OnClickListener{

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity1);

    Button sub_activity_1_btn = (Button) findViewById(R.id.sub1);
    sub_activity_1_btn.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
    startActivity(new Intent(« com.subActivity1″));
    }
    });

    Button sub_activity_2_btn = (Button) findViewById(R.id.sub2);
    sub_activity_2_btn.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
    startActivity(new Intent(« com.subActivity2″));
    }
    });

    }

    public void onClick(View v) {

    }
    }

    là mon activity1 a 2 boutons pour aller à subActivity1 et subActivity2.

    Main quand je clique sur un de ces boutons, le tabWidget disparait (ce qui est logique) mais comment fait-on pour qe ça ne disparait pas.

    Merci. (en détresse)

  3. htpad16
    27 jan 2012

    Merci pour le partage mais a défaut de me planter c’était bien précisé dans le tutos de Google « Notice that this doesn’t use a layout file. Just create a TextView, give it some text and set that as the content. Duplicate this for each of the three activities, and add the corresponding tags to the Android Manifest file. » a moins qu’il l’ai rajouté entre temps :-)

  4. XDroidMan
    29 fév 2012

    Salut,
    j’ai essayer ce tutoriel et c’est bon ça marche mais reste un problème comment je peut passer de cette activity a une autre et revenir une autre fois ?

  5. Marouane
    17 mai 2012

    Bonjour,
    Merci pour tous tes tutos, mais google précise bien ceci :

    « Notice that this doesn’t use a layout file. Just create a TextView, give it some text and set that as the content. Duplicate this for each of the three activities, and add the corresponding tags to the Android Manifest file. »

    Cheers !

  6. feriel
    9 avr 2013

    Bonsoir,

    s’il vous plait je n’ai pas trouver le code source de ce tuto est-ce que quelqu’un pourrait me le passer ça serais très gentil

    Merci d’avance

Une question, une suggestion, une opinion? Partagez ce que vous pensez, laissez un commentaire.

(obligatoire)
(obligatoire)

Note: Votre adresse email ne sera jamais publiée.

Suivez les réponses aux commentaires