2012-11-06 12 views
24

Temel olarak onWindowFocusChanged()'un işlevselliğine, ancak Fragment'a ihtiyacım var. onWindowFocusChanged() dinleyicisi maalesef fragmanlar için mevcut değildir, bu yüzden ne yapacağımı bilmiyorum.Bir parça çizildiğinde algılanır mı?

Bunu yapmanın herhangi bir yolu var mı?

cevap

54

Parçalar, onCreateView() içinde döndüğünüz View aracılığıyla "çizilir". Olay işleyicilerini bu şekilde kullanabilirsiniz. Genellikle, View ilk görüntülendiğinde çalıştırılması gereken bir komut varsa, Runnable'a atayabilir ve post() yöntemiyle 'a ekleyebilirsiniz.

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

Doğru çalışıyor görünüyor! Bunu, doğru cevap olarak seçmeden önce bazı senaryolar boyunca başlatacağım. – VicVu

+2

Ayrıca (neredeyse iki ay sonra) bu hilenin herhangi bir Görünüm üzerinde çalıştığını da not etmeliyim. Sadece Fragment aracılığıyla gönderilenler değil, bu nedenle örneğin bir View int Etkinliğini şişirirseniz. Bu çalışacak. – DeeV

+1

Evet! Ben bu küçük manzara hile yapmak için her yerinde kullanıyordum, harika. – VicVu

-3

OnWindowFocusChanged sizin Fragment odak alabilen her görüntülemede OnWindowFocusChanged Uygulamak bir görünüm çizerek hakkında bilgi sağlamaz (veya görmedim). sözde kodu :

Fragment implements OnWindowFocusChanged{ 

onCreate(){ 

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

} 

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

} 
0

onWindowFocusChanged (boolean hasFocus) yöntemi aktivitesinde çağırır, ama fragmanı drawns biz aracılığıyla kontrol usul onActivitycreated(). Bu gönderiyi kontrol edin https://stackoverflow.com/a/32819850/2732632

İlgili konular