2012-11-06 19 views
24

Grundsätzlich brauche ich die Funktionalität onWindowFocusChanged() aber auf Fragment. Der onWindowFocusChanged() Listener ist leider nicht wirklich zu Fragmenten verfügbar, also bin ich mir nicht sicher, was ich tun soll.Erkennen, wenn ein Fragment gezeichnet wird?

Jeder Weg, dies zu tun?

Antwort

54

Fragmente werden "gezeichnet" über die View Sie zurück in onCreateView(). Sie können die Ereignishandler darin verwenden. Wenn es einen Befehl gibt, der ausgeführt werden muss, wenn View zuerst angezeigt wird, können Sie es normalerweise in Runnable zuweisen und es an die View über die -Methode anhängen.

getView().post(new Runnable() { 
    @Override 
    public void run() { 
     // code you want to run when view is visible for the first time 
    } 
    } 
) 
+2

Scheint, richtig zu arbeiten! Ich werde es durch einige Szenarien laufen lassen, bevor ich dies als die richtige Antwort auswähle. – VicVu

+2

Ich sollte auch beachten (fast zwei Monate später), dass dieser Trick auf jedem View funktioniert. Nicht nur diejenigen, die über Fragment gepostet werden, also wenn du zum Beispiel eine Ansicht in die Aktivität auffüllst. Das wird funktionieren. – DeeV

+1

Ja! Ich benutze das alles für kleine View Gimmicks, die ich habe, es ist großartig. – VicVu

-3

OnWindowFocusChanged bietet keine Informationen über eine Ansicht Zeichnung (oder nicht sehen) Implementieren auf jeder Ansicht OnWindowFocusChanged, die den Fokus in Ihrem Fragment haben. in Pseudo-Code:

Fragment implements OnWindowFocusChanged{ 

onCreate(){ 

btn.OnWindowFocusChanged(this); 
editTxt.OnWindowFocusChanged(this); 
.... 

} 

public void OnWindowFocusChanged(boolean hasFocus){ 
// your fragment has focus 
} 

} 
0

onWindowFocusChanged (boolean hasFocus) -Methode in Aktivität aufruft, aber wenn Fragment drawns wir Verfahren onActivitycreated überprüfen kann durch(). Überprüfen Sie diesen Beitrag https://stackoverflow.com/a/32819850/2732632

Verwandte Themen