2011-08-15 6 views
8

Je demande cela parce que je suis un peu curieux.Des fragments Android masquent OnHide/OnShow?

1) La plupart des google demos trouvent des fragments par leur ID si le fragment a déjà été créé en XML. Donc, si nous adoptons cette approche, la façon dont nous montrons les fragments est de les cacher et de les montrer puisque les fragments sont déjà créés.

2) Il y a aussi des exemples fournis par google où vous pouvez créer le fragment avec un constructeur et le gonfler. Cela agit bizarrement comme getActivity() renvoie null s'il est appelé avec dans ce fragment. Donc, si je prends la première approche, je dois cacher et montrer les fragments. Alors pourquoi google ne fournit pas de hooks aux fragments comme onHide ou onShow afin que nous puissions gérer les choses correctement au lieu de faire le nettoyage nous-mêmes avec des fonctions que nous implémentons et appelons explicitement.

+0

Ce poste a des réponses pertinentes: http://stackoverflow.com/questions/10024739/how-to-determine-when-fragment-becomes-visible-in-viewpager – treesAreEverywhere

Répondre

25

Si vous voulez brancher op sur onHide/onShow juste passer outre

public void onHiddenChanged(boolean hidden) { 
} 

dans votre fragment.

-2

Je remplace la fonction ci-dessous pour déterminer si un fragment est affiché ou masqué.

@Override setMenuVisibility public void (finale visible boolean)

0

Par Overrinde setUserVisibleHint, vous pouvez facilement suivre.

@Override 
public void setUserVisibleHint(boolean isVisibleToUser) { 
    super.setUserVisibleHint(isVisibleToUser); 
    if(isVisibleToUser){ 
     //When fragment is visible 
    } 
    Log.i("my_fragment","setUserVisibleHint: "+isVisibleToUser); 
}