【发布时间】:2013-07-05 14:25:53
【问题描述】:
当它是活动页面时,是否可以仅在 viewPager 的片段中调用方法?
或者如果片段是当前页面,片段中的布尔值可能会有所不同? (如:if(isActivePage))。
我想在异步任务中加载一些数据并在加载时显示ProgressDialog。但仅适用于活动页面(用户应该能够调整,他访问的片段被缓存,而不是左侧和右侧的页面......)viewPager.setOffscreenPageLimit(0)不起作用(look this post) ,我尝试设置一个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;
}
...
}
(在ArticlePageFragment 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;
}
}
【问题讨论】:
-
stackoverflow.com/questions/17298900/…。检查这可能会有所帮助
-
我不知道如何在我的情况下实现这个......
标签: android android-fragments android-viewpager android-fragmentactivity