我正在使用FragmentStatePageAdapter(android.support.v4),并将setOffscreenPageLimit设置为2,因此它在当前显示的Fragment的前面和后面2处创建和存储Fragments 2。
问题:
创建屏幕外片段后,即使尚未将它们绘制到屏幕上,它们也会立即启动和恢复。 (!)
当当前页面被更改并且相应的片段从屏幕上滑出时,它不会暂停或停止。 (!)
我试过记录FSPA及其超类中所有回调的行为-setPrimaryItem变得最接近可用,但由于各种原因似乎被调用,而不仅是在显示片段时。
如何检测到片段之一不再显示或返回显示?
最佳答案
您可以使用侦听器。
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
}
}
});
}