[英]onResume() is not working properly in Fragments?
我正在處理 Fragments,所以這里我的視圖尋呼機中有三個 Fragment
所以在這里我在我的第一個片段中使用onResume()
方法,所以當我從一個片段滑動到另一個片段時我又回到第一個片段我的onResume
方法不起作用
所以任何人都可以給出解決方案
這是由於ViewPager
將Fragment
保存在內存中的方式。 如果Fragment
滾動超過屏幕外頁面限制(通過.setOffscreenPageLimit()
設置),則應將其從內存中刪除並在重新加載時重新實例化(IIRC,當它返回屏幕時可能無法保證)。
要在選擇頁面時運行特定於片段的代碼,您可以嘗試以下操作:
mPager.setOnPageChangeListener(new SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
final MyFragment fragment = mAdapter.getFragment(position);
fragment.myMethod();
}
}
我自己也遇到過這個問題。
首先將tabListener
添加到您的 viewpager。 在onTabSelected
方法中,創建所選片段的實例並調用onResume()
。
ActionBar.TabListener tabListener = new ActionBar.TabListener() {
@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
}
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
viewPager.setCurrentItem(tab.getPosition());
mContent.setUserVisibleHint(false);
mContent.onPause();
mContent = mAdapter.getItem(tab.getPosition());
mContent.setUserVisibleHint(true);
mContent.onResume();
}
@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
}
};
這里, mContent
是當前選擇的片段, mAdapter
是 viewpager 的適配器。
在片段中(使用 ViewPager)使用 setUserVisibleHint(boolean isVisibileToUser) 代替 onResume():
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(isVisibleToUser) {
refresh();
} else {
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.