【问题标题】:get active fragment in pageViewer在 pageViewer 中获取活动片段
【发布时间】: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;
    }
}

【问题讨论】:

标签: android android-fragments android-viewpager android-fragmentactivity


【解决方案1】:

您需要使用 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;
}

【讨论】:

  • 什么时候调用onPageScrolled方法?我使用ScreenSlidePagerAdapter extends FragmentStatePagerAdapter(抱歉,有问题更正了它),eclipse 说The method onPageScrolled(int, float, int) from the type ArticlePageSliderActivity.ScreenSlidePagerAdapter is never used locally(通常它叫我添加 Override 注释)。我有错误的适配器吗? (发布有问题)
猜你喜欢
  • 2015-07-21
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
  • 1970-01-01
  • 1970-01-01
  • 2020-06-08
  • 1970-01-01
  • 2012-08-26
相关资源
最近更新 更多