2012-11-06 19 views
24

基本上我需要的onWindowFocusChanged()但在Fragment的功能。 的onWindowFocusChanged()聽者實際上不是提供給不幸的片段,所以我不知道該怎麼做。檢測片段何時被繪製?

任何方式來做到這一點?

回答

54

片段通過你在onCreateView()返回View「繪製」。你可以在那裏使用事件處理程序。通常情況下,如果有需要,當View首次來查看要運行的命令,你可以在一個Runnable分配給它,它通過post()方法連接到View

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

似乎是工作吧!在我選擇這個作爲正確答案之前,我將通過一些場景來運行它。 – VicVu

+2

我也應該注意到(近兩個月後),這個技巧適用於任何視圖。不僅僅是通過片段發佈的,所以如果你膨脹一個View int他活動例如。這將工作。 – DeeV

+1

是的!我一直在使用這一切爲我的小噱頭噱頭,它的偉大。 – VicVu

-3

OnWindowFocusChanged不提供信息關於繪製視圖(或沒有看到) 上,可以在你的片段具有焦點每個視圖實現OnWindowFocusChanged。 在僞代碼:

Fragment implements OnWindowFocusChanged{ 

onCreate(){ 

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

} 

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

}