Android: Comment appeler la fonction de l'Activité à l'intérieur de l'onglet de la tabhost
J'ai un tabhost avec trois onglets. Chacun est une activité. Je voudrais avoir un bouton dans la barre d'action la barre sur le haut avec des boutons, appeler des fonctions de l'onglet actif.
Par exemple, une fonction d'ajout qui pourrait ajouter quelque chose de différent à chaque onglet en fonction de ce que l'onglet est présent lorsque vous avez cliqué sur le bouton.
Donc, je suis aksing comment appeler une fonction dans Une Activité à partir de la tabHost.
Et si cela ne marchera pas, peut-être que je peux mettre à jour la base de données à partir de la tabhost puis actualiser le contenu de l'onglet. Serait-ce plus facile?
Merci à vous tous pour vous de temps et de soutien.
OriginalL'auteur trgraglia | 2011-03-16
Vous devez vous connecter pour publier un commentaire.
Salut Juste trébuché à travers ce, ne sais pas si vous avez déjà trouvé une solution?
J'ai résolu moi-même récemment. J'étais auparavant contourner le problème en soulevant l'intention de la diffusion de la tabhost de l'activité et de la réception de la diffusion dans le sous-onglet activité. Cela a fonctionné pour moi, mais j'étais sûr qu'il ya une "meilleure façon".
D'une façon plus propre est de parvenir à quelque chose comme ceci:
pourrait avoir quelque chose comme ceci:
parentActivity
- mon "conteneur"activité qui détient le TabHost
childActivity
- mon onglet activitéqui détient le contenu de l'onglet et la
méthode publique, je tiens à appeler à partir de
parentActivity
dans parentActivity:
dans childActivity:
Remarque: une Autre alternative, je crois que c'est pour la refonte de l'utilisation des vues sur la place des activités dans vos onglets. C'est une meilleure alternative, car autant que je me souvienne de la mémoire de sage, vous êtes seulement de stocker 1 activité sur la pile, plutôt que de se
n * tabs
) nombre d'activitésEspère que ça aide
onClick est mauvais code. De retour pas de l'activité de l'enfant, mais l'enfant en vue de tabhost - LinearLayout
Salut @Rockmaninoff , je suis confronté au même problème.avez-u obtenir n'importe quelle solution??
OriginalL'auteur wired00
J'ai utilisé le code suivant dans mon TabActivity classe pour changer d'onglet, puis appeler une méthode publique définie à l'activité de l'onglet:
Je l'espère, utile pour quelqu'un qui cherche la réponse à cette question.
cela a fonctionné comme un charme 🙂 l'autre m'a donné un classCastException...
k : salut, j'ai créer 3 les intentions des activités(que j'ai ajouter à TabHost) dans mon principal TabActivity. J'ai aussi l'actualisation dans tabhost mise en page, cliquez sur ce bouton actualiser je veux actualiser la liste de l'intention de l'activité/actuel onglet activité, normalement méthode publique est appelé comme tu dit, mais dans d'autres cas, cela montre conext problème...une idée sur ça?
OriginalL'auteur Dan Kilpatrick
Édités par Peter O'demande:
Je suis sur l'API de 10, et ce problème m'a donné un mal de tête énorme. J'ai 3 onglets, j'ai envie de tous les avoir à être au courant des modifications sur les autres. Le problème que j'avais était que, lorsque l'activité d'un onglet est commencé, il semblait y avoir aucun appel de retour à l'activité entendu l'utilisateur a basculé vers un autre onglet, et donc nécessaires pour faire le travail pour être sûr que son état est correct.
J'ai trouvé beaucoup de réponses à ce problème, mais aucun ne semble fonctionner.
Celui que j'ai finalement obtenu au travail était la solution proposée comme #3 de ce fil-mais c'est trop confus. J'ai trouvé que le getTabHost().setCurrentTab(0); ne fait rien; j'ai mis en place OnTabChangeListener() pour appeler une fonction qui utilisé getTabHost().setCurrentTab(0); cependant, j'ai trouvé le getTabHost().setCurrentTab(0); causés à l'application de crash pour n'importe quel onglet autre que 0--e.g, Si j'ai choisi l'onglet B (indice=1) alors appelé getTabHost().setCurrentTab(1); l'application s'est écrasé.
De l'utilisation du Débogueur, j'ai trouvé à l'appel de cette.getactiviteencours(); renvoie toujours l'activité associée à l'onglet dans lequel l'utilisateur a cliqué sur--appel getTabHost().setCurrentTab(); ne pas changer ce fait, et a causé l'application crash.
Donc je me suis débarrassé de lui et je peux maintenant appeler cette.getactiviteencours(), puis d'appeler une méthode dans la Actvitity classe retourné par l'appel --cela permet à l'activité savez qu'il doit mettre à jour son état--dans mon cas, il le fait à l'aide de l'objet application.
Je suis d'accord avec Pierre. Bienvenue DONC, Derwood et merci de répondre, mais l'apprentissage de mise en forme vous aidera à obtenir accepté plus et obtenir de meilleurs résultats. Comme pour les erreurs sur les onglets autres que 0... Sonne comme quelque chose d'autre est à l'origine de l'erreur.
OriginalL'auteur Derwood Kirkwood
Au-dessus de la voie de l'appel de la méthode ne fonctionnera pas,
Voici la réponse rapide pour le problème ci-dessus:
getTabHost().setCurrentTab(0);
Activity myActivity=getCurrentActivity();
String name=((Tab1) myActivity).et1.getText().toString();
Ici le code ci-dessus est donnée dans le
onclick()
méthode de l'activité qui a TahHostoù Tab1 est le secondactivity et et1 est l'identité de l'edittext dans la Tab1 activité de sorte que vous pouvez obtenir toutes de la valeur des différents champs comme ceci individuellement.
OriginalL'auteur user3346392