2011-08-15 91 views
8

我問這個因爲我有點好奇。Android碎片隱藏顯示OnHide/OnShow?

1)如果片段已經在xml中創建,大多數谷歌演示將通過其ID找到片段。

所以,如果我們採取這種方法,我們顯示片段的方式是隱藏它並顯示它,因爲片段已經創建。

2)也有谷歌提供的例子,你可以用一個構造函數創建片段並對它進行膨脹。這種行爲很奇怪,就像getActivity()在該片段中調用時返回null一樣。

所以,如果我採取第一種方法,我必須隱藏和顯示片段。 那麼爲什麼Google不提供鉤子一樣onHide碎片或昂秀 這樣我們就可以妥善處理的事情,如果不是與我們實現和顯式調用函數做清理自己。

+0

這個職位有一些相關的答案: http://stackoverflow.com/questions/10024739/how-to-determine-when-fragment-becomes-visible-in-viewpager – treesAreEverywhere

回答

25

如果要勾上onHide/onShow運算只是覆蓋

public void onHiddenChanged(boolean hidden) { 
} 

在你的片段。

-2

我重寫下面的函數來確定片段是否被顯示或隱藏。

@覆蓋 公共無效setMenuVisibility(最終布爾可見)

0

通過Overrinde setUserVisibleHint您可以輕鬆地跟蹤它。

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