[英]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.