Dans cette deuxième partie du tuto, nous allons finir de mettre en place en JAVA le système d'onglet en utilisant une TabActivity et en modifiant le manifest.
Dans cette deuxième partie du tuto, nous allons finir de mettre en place en JAVA le système d'onglet en utilisant une TabActivity et en modifiant le manifest.
Avant de commencer ce tuto je vous conseille de réaliser tout d’abord la première partie concernant l’XML : Tab Android première version - Partie 1 (XML)
On ouvre le fichier : « /src/com.androiddev.tab/TabAndroidActivity.java »
On place tout les imports nécessaires :
1 2 3 4 5 | import android.app.TabActivity; import android.content.Intent; import android.content.res.Resources; import android.os.Bundle; import android.widget.TabHost; |
Ensuite on doit avoir cette classe et cette fonction :
1 2 3 4 5 6 | public class TabAndroidActivity extends TabActivity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.main); |
A la suite dans la fonction onCreate() :
1 2 3 4 5 | Resources res = getResources(); TabHost tabHost = getTabHost(); TabHost.TabSpec spec; Intent intent; intent = new Intent().setClass( this , Tab1. class ); |
Resources res = getResources();
TabHost tabHost = getTabHost();
TabHost.TabSpec spec;
Intent intent;
Maintenant la partie où l'on lie nos onglets à la principale activity :
1 2 3 | intent = new Intent().setClass( this , Tab1. class ); spec = tabHost.newTabSpec( "Widget" ).setIndicator( "DateTime" , res.getDrawable(android.R.drawable.ic_menu_today)).setContent(intent); tabHost.addTab(spec); |
intent = new Intent().setClass(this, Tab1.class);
spec = tabHost.newTabSpec("Widget").setIndicator("DateTime", res.getDrawable(android.R.drawable.ic_menu_today)).setContent(intent);
tabHost.addTab(spec);
Même système, à part que l'on modifie la classe et la "configuration" des onglets :
1 2 3 4 5 6 7 | intent = new Intent().setClass( this , Tab2. class ); spec = tabHost.newTabSpec( "Form" ).setIndicator( "Form" , res.getDrawable(android.R.drawable.ic_menu_manage)).setContent(intent); tabHost.addTab(spec); intent = new Intent().setClass( this , Tab3. class ); spec = tabHost.newTabSpec( "onglet3" ).setIndicator( "onglet3" , res.getDrawable(android.R.drawable.ic_menu_mapmode)).setContent(intent); tabHost.addTab(spec); |
On choisit l'onglet par défaut comme ceci :
1 | tabHost.setCurrentTab( 0 ); |
Ici on pouvait mettre soit 0, 1 ou 2.
Dans /src/com.androiddev.tab on créé 3 fichiers java : Tab1.java, Tab2.java et Tab3.java
Tous les trois possèderons pratiquement le même contenu.
Tab1.java :
1 2 3 4 5 6 7 8 9 10 11 12 13 | package com.androiddev.tab; import android.app.Activity; import android.os.Bundle; public class Tab1 extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.onglet1); } } |
Explication :
setContentView(R.layout.onglet1);
Seulement cette ligne est modifié pour les deux autres fichiers :
Tab2.java :
1 2 3 4 5 6 7 8 9 10 11 12 13 | package com.androiddev.tab; import android.app.Activity; import android.os.Bundle; public class Tab2 extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.onglet2); } } |
Tab3.java :
1 2 3 4 5 6 7 8 9 10 11 12 13 | package com.androiddev.tab; import android.app.Activity; import android.os.Bundle; public class Tab3 extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.onglet3); } } |
Voici le récapitulatif de TabAndroidActivity.java :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | package com.androiddev.tab; import android.app.TabActivity; import android.content.Intent; import android.content.res.Resources; import android.os.Bundle; import android.widget.TabHost; public class TabAndroidActivity extends TabActivity { /** Called when the activity is first created. */ @Override 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 , Tab1. class ); spec = tabHost .newTabSpec( "Widget" ) .setIndicator( "DateTime" , res.getDrawable(android.R.drawable.ic_menu_today)) .setContent(intent); tabHost.addTab(spec); intent = new Intent().setClass( this , Tab2. class ); spec = tabHost .newTabSpec( "Form" ) .setIndicator( "Form" , res.getDrawable(android.R.drawable.ic_menu_manage)) .setContent(intent); tabHost.addTab(spec); intent = new Intent().setClass( this , Tab3. class ); spec = tabHost .newTabSpec( "onglet3" ) .setIndicator( "onglet3" , res.getDrawable(android.R.drawable.ic_menu_mapmode)) .setContent(intent); tabHost.addTab(spec); tabHost.setCurrentTab( 0 ); } } |
Avec toutes ses classes, notre système à onglet est fonctionnel mais il manque une chose important, on doit modifier le manifest.
Il se trouve dans /res/AndroidManifest.xml :
Il faut faire dans l'ordre indiqué sur l'image ci-dessus :
Puis :
L'ordre des étapes est numéreauté :
Ne pas oublier de sauvegarder ensuite !!
Refaire ces manipulation pour toutes les classes nécessaires :
Maintenant le tuto est vraiment terminé.