是否可以在viewPager的片段中调用方法,当它是活动页面时?
或者,如果片段是当前页面,则片段中的布尔值可能不同? (例如:if(isActivePage)
)。
我想在asynctask中加载一些数据,并在加载时显示ProgressDialog
。但仅适用于活动页面(用户应该能够调整,片段被缓存,他访问过,而不是左侧和右侧的页面......)viewPager.setOffscreenPageLimit(0)
不起作用({{ 3}}),我尝试设置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;
}
}
修改
{{1}}
答案 0 :(得分:0)
您需要使用ViewPager的适配器。你需要这样的设置......
// in your fragment
public boolean isActive(){
return (mPageAdapter.getPosition() == MyFragment.POSITION);
}
// in your adapter
private pagePosition=0; // or initial position
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
pagePosition = position;
}