Propriété de Albiri Sigue
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
Chapitre 24
Lancement d’activités et de sous-activités 255
Navigation avec onglets
La navigation par onglet est l’une des principales fonctionnalités des navigateurs web
actuels : grâce à elle, une même fenêtre peut afficher plusieurs pages réparties dans une
série d’onglets. Sur un terminal mobile, cela a moins d’intérêt car on gaspillerait la
précieuse surface de l’écran pour afficher les onglets eux-mêmes. Toutefois, pour les
besoins de la démonstration, nous montrerons comment créer ce genre de navigateur, en
utilisant TabActivity et les intentions.
Au Chapitre 10, nous avons vu qu’un onglet pouvait contenir une vue ou une activité.
Dans ce dernier cas, vous devez fournir une intention qui lancera l’activité souhaitée ; le
framework de gestion des onglets placera alors l’interface utilisateur de cette activité dans
l’onglet.
Votre premier instinct pourrait être d’utiliser une Uri http: comme nous l’avions fait avec
une Uri geo: dans l’exemple précédent :
Intent i=new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse("http://commonsware.com"));
Vous pourriez ainsi utiliser le navigateur intégré et disposer de toutes ses fonctionnalités.
Malheureusement, cela ne marche pas car, pour des raisons de sécurité, vous ne pouvez
pas héberger les activités d’autres applications dans vos onglets – uniquement vos propres
activités.
Nous allons donc dépoussiérer nos démonstrations de WebView du Chapitre 13 pour créer
le projet Activities/IntentTab.
Voici le code source de l’activité principale, celle qui héberge le TabView :
public class IntentTabDemo extends TabActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TabHost host=getTabHost();
host.addTab(host.newTabSpec("un")
.setIndicator("CW")
.setContent(new Intent(this, CWBrowser.class)));
host.addTab(host.newTabSpec("deux")
.setIndicator("Android")
.setContent(new Intent(this, AndroidBrowser.class)));
}
}
Comme vous pouvez le constater, notre classe hérite de TabActivity : nous n’avons donc
pas besoin de créer un fichier de description XML – TabActivity s’en occupe pour nous.
Livre Android.book Page 255 Dimanche, 8. novembre 2009 12:23 12
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
Chapitre 24
Lancement d’activités et de sous-activités 255
Navigation avec onglets
La navigation par onglet est l’une des principales fonctionnalités des navigateurs web
actuels : grâce à elle, une même fenêtre peut afficher plusieurs pages réparties dans une
série d’onglets. Sur un terminal mobile, cela a moins d’intérêt car on gaspillerait la
précieuse surface de l’écran pour afficher les onglets eux-mêmes. Toutefois, pour les
besoins de la démonstration, nous montrerons comment créer ce genre de navigateur, en
utilisant TabActivity et les intentions.
Au Chapitre 10, nous avons vu qu’un onglet pouvait contenir une vue ou une activité.
Dans ce dernier cas, vous devez fournir une intention qui lancera l’activité souhaitée ; le
framework de gestion des onglets placera alors l’interface utilisateur de cette activité dans
l’onglet.
Votre premier instinct pourrait être d’utiliser une Uri http: comme nous l’avions fait avec
une Uri geo: dans l’exemple précédent :
Intent i=new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse("http://commonsware.com"));
Vous pourriez ainsi utiliser le navigateur intégré et disposer de toutes ses fonctionnalités.
Malheureusement, cela ne marche pas car, pour des raisons de sécurité, vous ne pouvez
pas héberger les activités d’autres applications dans vos onglets – uniquement vos propres
activités.
Nous allons donc dépoussiérer nos démonstrations de WebView du Chapitre 13 pour créer
le projet Activities/IntentTab.
Voici le code source de l’activité principale, celle qui héberge le TabView :
public class IntentTabDemo extends TabActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TabHost host=getTabHost();
host.addTab(host.newTabSpec("un")
.setIndicator("CW")
.setContent(new Intent(this, CWBrowser.class)));
host.addTab(host.newTabSpec("deux")
.setIndicator("Android")
.setContent(new Intent(this, AndroidBrowser.class)));
}
}
Comme vous pouvez le constater, notre classe hérite de TabActivity : nous n’avons donc
pas besoin de créer un fichier de description XML – TabActivity s’en occupe pour nous.
Livre Android.book Page 255 Dimanche, 8. novembre 2009 12:23 12
