每次我的片段成爲可見的我要執行的代碼的和平,將調用Web服務,獲取一些數據,並在屏幕上顯示它的用戶。我得到了Web服務部分等工作,但在什麼情況下我必須添加我的代碼不知道....我想:片段變得可見
- 在onStart
- 的onResume
- onAttach
但我的代碼每次都不會啓動。
正在使用與SherlockFragment Android的V4補償LIB作爲我的基類。
每次我的片段成爲可見的我要執行的代碼的和平,將調用Web服務,獲取一些數據,並在屏幕上顯示它的用戶。我得到了Web服務部分等工作,但在什麼情況下我必須添加我的代碼不知道....我想:片段變得可見
但我的代碼每次都不會啓動。
正在使用與SherlockFragment Android的V4補償LIB作爲我的基類。
onResume()
被稱爲每次你的片段變得對用戶可見的時間。還有別的東西你的代碼錯誤,如果它不
onCreateView()
被稱爲第一時間片段需要借鑑它的UI
更新:該接受的答案是工作5年前 - 它不」牛逼了
你應該看看Fragement文檔,這與活動有很大的區別http: //developer.android.com/guide/components/fragments.html。 – mba
答案是錯的。據我所知:我有一個FragmentActivity,並在該活動中使用ViewPager。 ViewPager包含4個片段。每當我的應用程序啓動(只有第一個片段可見)時,第一個和第二個Fragements的兩個方法:onCreateView()和onResume()被調用! – hungson175
這不完全是我說的嗎? onResume總是被稱爲 - 也是當應用程序開始(第一次)以及onCreateView – Lieuwe
onCreateView()
調用當您更改片段以及新片段變得可見每次..
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
看看,讓我知道,發生什麼事了許多不同的方式? – user370305
嗯,我堅持了這個問題,並試圖但這一個是解決當片段變得可見再次 –
不工作 - !它只有當你的交易有兩個片段與片段的片段新創建的名爲 – keybee
您可以使用
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) { }
else { }
}
看一看this
這是API 15及以上:(當boo – RobP
不起作用時,你推後面的按鈕與嵌套片段 – splinter123
這可能很老,但我發現setUserVisibleHint()不適用於我的許多用例。相反,我不得不使用ViewTreeObserver進行破解。
基本上,你的片段被初始化後,你在其中一個視圖,並做到以下幾點:
myViewInFragment.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
myMethodWhenFragmentFirstBecomesVisible();
myViewInFragment.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
});
}
以下方法被用於確定何時片段成爲用戶的正面可見。
private boolean loding= false; // your boolean flage
@Override
public void setUserVisibleHint(boolean isFragmentVisible) {
super.setUserVisibleHint(true);
if (this.isVisible()) {
// we check that the fragment is becoming visible first time or not
if (isFragmentVisible && !loding) {
//Task to doing while displaying fragment in front of user
loding = true;
}
}}
這裏
同樣的問題。文檔說onCreateView()之後onResume被調用一次。在將片段添加到FragmentManager()時,似乎沒有片段上的事件。我不知道該怎麼做。我想,我們必須使用FragmentManager.OnBackStackChangedListener()但從Frament點,沒有問題:( – mba