2010-08-20 16 views
0

J'ai lu beaucoup de commentaires sur la façon dont il est plus léger d'utiliser les vues au lieu des intentions dans setContent lorsque vous utilisez des onglets.Modifier le contenu de l'onglet sur le bouton cliquez sur

Depuis que je vais créer une application avec des onglets, j'essaye d'implémenter ceci au lieu d'avoir des intentions à l'intérieur setContent. Cependant, j'ai du mal à trouver des exemples ou des didacticiels simples sur l'échange de la vue actuelle avec un autre.

Dites que j'ai TAB_A, avec quelques champs d'entrée et un bouton. Lorsque l'utilisateur clique sur le bouton, un TextView affiche "Bonjour, utilisateur!" dans le même TAB_A. Bien sûr, il s'agit d'un exemple simpliste, mais il va sûrement me diriger dans la bonne direction.

EDIT: J'ai un onglet appelé TAB_A avec un bouton dedans. Si l'utilisateur clique sur ce bouton, TAB_A affichera désormais "Bonjour, utilisateur!" au lieu du bouton.

Voici un exemple de mon TabSpec.

TabHost.TabSpec spec = tabHost.newTabSpec(getString(R.string.tabspec_tag_search)) 
       .setIndicator(getString(R.string.tabspec_indic_search), 
         res.getDrawable(R.drawable.tab_ic_search)) 
       .setContent(new TabContentFactory() { 
       @Override 
       public View createTabContent(String tag) { 
        switch (doWhat){ 
        case ACTIVITY_SPLASH_PAGE: 
             return showButton; 
        case ACTIVITY_HELLO: 
             return showHello; 
        } 
         return null; 
       } 
      }); 
     tabHost.addTab(spec); 

ShowButton et ShowHello sont des classes deux LinearLayout extension. Les deux sont initialisés dans onCreate comme ceci: ShowButton showButton = new ShowButton(this);

intérieur de la classe showButton, j'ai cet écouteur:

viewHolder.button.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Intent intent = new Intent(context, Search247.class); 
     intent.putExtra(EXTRA_DO_WHAT, ACTIVITY_HELLO); 
     context.startActivity(intent); 
    } 
}); 

Lorsque l'application démarre, l'utilisateur voit la showButton vue. Lorsque l'utilisateur clique sur le bouton, je veux que l'onglet change son contenu en showHello.

La question est alors: Y at-il un moyen de mettre à jour le contenu de la tabspec sans utiliser startActivity?

Merci comme toujours!

+1

Peut-être que c'est juste moi, mais la question ou le problème n'est pas clair. – DonSteep

+0

Je n'ai aucune idée de ce que vous voulez. Des exemples de code pour créer un écran à onglets? Nos pensées sur le problème de l'intention? Cette chose de TextView m'a vraiment troublé. – Maragues

Répondre

1

a trouvé la réponse:

ViewGroup viewGroup = (ViewGroup) mView.getParent(); 
viewGroup.removeView(mView); 
addView(showResults); 

mView est la vue initiale dans l'onglet. Maintenant, essayons juste de comprendre comment faire pour que l'application se souvienne d'afficher mView lorsque BACK est pressé à partir de la nouvelle vue.

+0

excellente solution! Je cherchais pendant des siècles ..! – Renjith