2011-08-15 11 views
8

Pytam o to, bo jestem trochę ciekawy.Fragmenty Androida ukryj pokaż OnHide/OnShow?

1) Większość demów google znajduje fragmenty według jego identyfikatora, jeśli fragment został już utworzony w xml.

Jeśli więc podejmiemy takie podejście, sposób w jaki pokazujemy fragmenty, polega na ukryciu go i wyświetleniu, ponieważ fragmenty są już utworzone.

2) Istnieją również przykłady dostarczone przez google, gdzie można utworzyć fragment z konstruktorem i nadmuchać go. Działa to dziwnie, tak jak metoda getActivity() zwraca null, jeśli jest wywoływana z tym fragmentem.

Więc jeśli zastosuję pierwsze podejście, muszę ukryć i pokazać fragmenty. Dlaczego więc Google nie udostępnia haków do fragmentów, takich jak onHide lub onShow , abyśmy mogli właściwie poradzić sobie z sytuacją, zamiast robić porządki za pomocą funkcji, które implementujemy i wzywamy jawnie.

+0

Ten post ma kilka istotnych odpowiedzi: http://stackoverflow.com/questions/10024739/how-to-determine-when-fragment-becomes-visible-in-viewpager – treesAreEverywhere

Odpowiedz

25

Jeśli chcesz się podłączyć op na onHide/onShow tylko przesłonić

public void onHiddenChanged(boolean hidden) { 
} 

w swoim fragmentem.

-2

Zastępuję poniższą funkcję, aby określić, czy fragment jest pokazany, czy ukryty.

@Override public void setMenuVisibility (ostateczna wartość logiczna widoczny)

0

Przez Overrinde setUserVisibleHint można łatwo śledzić go.

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