2017-04-20 6 views
0

j'ai un FragmentTabHost et j'ai un usertab ajouté comme ceci:FragmentTabHost fragment changeant pour un certain onglet, même quand il est pas sélectionné

mTabHost.addTab(mTabHost.newTabSpec("usertab").setIndicator(uti), LoginTab.class, null); 

Lorsque l'utilisateur est loggedin je veux changer la classe pour cet onglet à UserTab que je fais comme ceci:

getSupportFragmentManager() 
       .beginTransaction() 
       .replace(android.R.id.tabcontent, new UserTab(), "usertab") 
       .commit(); 

si l'utilisateur se trouve sur un onglet différent du contenu de l'onglet l'utilisateur est obtient changé (il est juste de remplacer le contenu de la mise en page de tabcontent qui est connecté au onglet actuellement sélectionné), j'espérais que l'ajout du paramètre tag dans le remplacer fonction ferait l'affaire, mais il ne fait pas (que fait-il de toute façon ?, car il ne fait rien de différent alors quand je ne l'utilise pas).

Est-ce que ma seule option pour modifier par programme l'onglet à usertab avant de valider la transaction ou y a-t-il un meilleur moyen?

(ce qui est mon premier toying autour avec tout le phénomène de fragment par la voie)

Répondre

0

Vous devez modifier le FragmentTabHost pour TabLayout associé à un viewpager, c'est un bon example; Si vous ne pouvez pas remplacer le fragmentTabHost je vous recommande de faire les transactions de fragment sans le .replace(), car il a un comportement inattendu lors de l'éclatement des transactions backstack qui pourrait être le problème que vous voyez maintenant