8
votes

OnClickListener sur les onglets ne fonctionnant pas

Salutations,

J'essaie d'obtenir l'événement Click - en cliquant sur l'onglet Actuellement sélectionné de ma tabactivité. L'OntabchangedHandler est uniquement appelé à chaque fois que l'onglet est modifié, non si l'onglet Actif actuellement actif est cliqué. Le débogueur me dit que j'ai l'ONCLICKLISTENER enregistré pour Tabwidget dans mon Tabhost.

suis-je inscription à la mauvaise vue?

En outre, je ne suis pas en mesure de créer un menu contextuel pour les onglets, ce n'est que pour son contenu? xxx


0 commentaires

4 Réponses :


10
votes

Utiliser setontabChangeDlistener au lieu de onclicklistener ;) xxx


4 commentaires

Vous n'êtes pas censé appeler une super méthode pour obtenir l'onglet "Clickable" comme avant? Lorsque j'ajoute ce code, il clique, la souris brille, mais elle ne montre pas la liste de la liste de cet onglet.


Désolé, mon erreur, travaille comme une bombe, j'avais du code supplémentaire qui prenait plus loin.


Je pense qu'il y a une erreur dans le code ... ici il devrait être gettabhost au lieu de tabhost .....


Bonjour Chirag en fait Tabhost vient de Gettabhost (); Voir l'article original, Tabhost Final Tabhost = GetTabhost ();



19
votes

Si vous voulez voir qu'un onglet particulier est cliqué, vous devez ajouter votre auditeur à l'onglet lui-même, pas le Tabhost.

La hiérarchie des vues dans une implémentation d'onglet est la suivante: p>

  • Tabhost
    • tabwidget
      • (onglet) li>
      • (onglet) li> ul> li>
      • Framelayout LI> ul> li> ul>

        Les onglets sont ajoutés à l'exécution en appelant: tabhost.addtab (tabhost.newtabspec ("")); > p>

        Vous pouvez ensuite obtenir une poignée Les onglets individuels en appelant: gettabwidget (). getTabildget (4); code> p>

        Essentience, vous ajoutez votre onclicklistener code> à un enfant du tabwidget . Vous pouvez maintenant récupérer les clics sur votre onglet individuel. Cependant, cela remplacera le comportement par défaut qui modifie le contenu lorsqu'un onglet est cliqué sur un onglet. Donc, pour que votre contenu change, votre onclicklistener code> devra faire cela pour vous. P>

        Voici un exemple complet, ce qui vous permet d'intercepter l'événement de clic et de modifier le contenu sous l'onglet: P>

        final String myTabTag = "My Tab";
        final int myTabIndex = 3;
        
        getTabHost().addTab( getTabHost().newTabSpec(myTabTag) );
        
        getTabWidget().getChildAt(myTabIndex).setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                if (getTabHost().getCurrentTabTag().equals(myTabTag)) {
                    getTabHost().setCurrentTab(myTabIndex );
                }
            }
        });
        


1 commentaires

Lorsque j'essaie ceci, cela change l'onglet mais pas le contenu sous l'onglet ... Toute suggestion?



2
votes

Votre clause est fausse, utilisez:

... xxx

...


0 commentaires

0
votes

dans mon code, cela montre des erreurs et demandez-moi de créer de nouvelles méthodes dans ces noms comme gettabwidget (), gettabhost (), etc. en attente de votre réponse.

Essayez ceci xxx


0 commentaires