2010-10-15 4 views
0

J'ai une application Android qui a quatre onglets (j'utilise un TabActivity principal avec TabHost et TabSpecs). Dans l'une de mes sous-activités (activité ouverte dans un onglet), je dois ouvrir un onglet non en cliquant sur le titre de l'onglet et je ne sais pas comment le faire. Par exemple, j'ai un bouton dans mon activité et quand je clique dessus, il ouvre un onglet différent. Pour le moment, il est ce que je fais:

Intent intent = new Intent(myActivity.this, myTabActivity.class);
intent.putExtra("ComeFrom", true);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

Ensuite, dans le TabActivity, si je reçois vrai lecture extra « comefrom » i ouvrir l'onglet souhaité, mais le problème est qu'il tue tous les autres activies. Donc, si quelqu'un connaît une meilleure façon (plus propre) de faire ce tour, s'il vous plaît dites-moi ...Android: Comment changer l'onglet ouvert dynamiquement

Répondre

0

Vous devez utiliser "setCurrentTab (...) TabHost pour cela. Dans l'un de mes projets, j'ai créé une méthode statique dans l'activité principale (celle avec TabHost), nommée "swtichToTab (int tab)". Dans mes sous-activités (ceux à l'intérieur des onglets) pourrait alors simplement appeler "MainActivity.switchToTab()" pour déclencher la commutation.

Cela peut ne pas être la méthode la plus propre, je suis sûr que vous pouvez y parvenir en utilisant des intentions de diffusion aussi.

+0

Merci; cela fonctionne bien pour mon besoin actuel;) – homega52

0

Vous pouvez créer un BroadcastReceiver et envoyer une émission avec l'index de l'onglet comme extra

0

Vous pouvez utiliser des vues plutôt que des activités pour le contenu des onglets. De cette façon, le code est plus simple et n'utilise pas autant de mémoire. De plus, vous pouvez ensuite utiliser la méthode setCurrentTab(tabIndex) pour basculer facilement entre les vues.

J'ai un tutoriel simple here. Il a une activité d'onglet avec une vue de liste et de carte. Lorsque vous cliquez sur un élément de la liste, l'activité passe dynamiquement en mode Carte (en utilisant la méthode setCurrentTab(tabIndex)). Vous pouvez facilement modifier cela pour avoir un bouton de changement de vue.

5

Nous signaler une plus facile (je pense) réponse:

  1. sur la TabActivity publique Déclarez une variable statique et de l'auto et le remplir sur la méthode onCreate. F.e .:

    public class TheActivity extends TabActivity { 
        public static TheActivity self; 
        ... 
        @Override 
        public void onCreate(Bundle savedInstanceState) { 
         self=this; 
    
  2. sur toute activité en cours d'exécution dans un onglet, lorsque vous voulez changer celle indiquée sur votre application. vous pouvez le faire:

    TabHost tabHost = TheActivity.self.getTabHost(); 
    tabHost.setCurrentTab(0); 
    

pour moi marchait bien, l'espoir sert quelqu'un d'autre!

+2

Cela pourrait être un bon moyen de résoudre ce problème aussi, Merci Zalakain! – homega52

Questions connexes