当它是活动页面时,是否可以仅在 viewPager 的片段中调用方法?或者如果片段是当前页面,片段中的布尔值可能会有所不同?(如:)if(isActivePage)
。
我想在 asynctask 中加载一些数据并ProgressDialog
在加载时显示 , 。但仅对于活动页面(用户应该能够调整,他访问的片段被缓存,而不是左侧和右侧的页面......)viewPager.setOffscreenPageLimit(0)
不起作用(看这篇文章),我试过了设置一个,OnPageChangeListener
但你不能在那里操作实际片段的任何属性。
请注意,这里是我尝试过FragmentActivity
的onCreate
:
...
fragments = new ArrayList<ArticlePageFragment>(pages);
for (int i = 0; i < pages; i++)
{
ArticlePageFragment fragment = new ArticlePageFragment();
Bundle args = new Bundle();
...
fragment.setArguments(args);
fragments.add(fragment);
}
viewPager.setOnPageChangeListener(new OnPageChangeListener()
{
@Override
public void onPageSelected(int position)
{
if (position > 0)
fragments.get(position - 1).isActivePage = false;
if (position < pages)
fragments.get(position + 1).isActivePage = false;
fragments.get(position).isActivePage = true;
}
...
}
(inArticlePageFragment
isActivePage
只是一个公共布尔值......)
如果不可能,也许还有另一种方式,没有ViewPager
或ScreenSlidePagerAdapter extends FragmentStatePagerAdapter
编辑
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter
{
public ScreenSlidePagerAdapter(FragmentManager fm)
{
super(fm);
}
public Fragment getItem(int position)
{
return fragments.get(position);
}
@Override
public int getCount()
{
return pages;
}
}