我正在使用FragmentStatePageAdapter(android.support.v4)并且我将setOffscreenPageLimit设置为2,因此它创建并存储前面的片段2和当前显示的片段后面的2。
问题: 当屏幕外片段创建时,即使它们尚未被绘制到屏幕上,它们也会立即启动并恢复。 (!)
当更改当前页面并在屏幕上滑动相应的片段时,它不会暂停或已停止。 (!)
我已经尝试记录FSPA中所有回调的行为及其超类 - setPrimaryItem 最接近可用但似乎是出于各种原因而被调用,而不仅仅是片段显示。
如何检测到某个碎片不再显示或返回显示屏?
答案 0 :(得分:1)
您可以使用听众。
mPager.setOnPageChangeListener(new OnPageChangeListener(){
@Override
public void onPageScrollStateChanged(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageSelected(int position) {
if(mPageSelectedListener!=null){
mPageSelectedListener.pageSelected(position);
}
}
});
PageSelectedListener由你定义的地方
public interface PageSelectedListener{
public void pageSelected(int position);
};
public void setPageSelectedListener(PageSelectedListener l){
mPageSelectedListener = l;
}
在你的片段
中使用它 if(getActivity() instanceof MyActivity
((MyActivity)getActivity()).setPageSelectedListener(new PageSelectedListener(){
@Override
public void pageSelected(int position) {
if(position==MyAdapter.MY_PAGE){
// do something with currently viewed page...like resume it
} else {
// do something with any other page..like pause it
}
}
});
}