FragmentStatePagerAdapter在选项卡重选时不调用getItem

时间:2014-11-19 16:33:21

标签: android android-fragments fragmentstatepageradapter

我有一个像这样的复杂UI设置:

主要片段 - >使用ActionBar.TabListener的片段 - >片段与FragmentStatePagerAdapter - > ListFragment

当应用程序加载并且我第一次使用FragmentStatePagerAdapter转到Fragment时,这是有效的,但是当我第二次使用FragmentStatePagerAdapter和ListFragment转到Fragment时发生的问题(所以转到另一个选项卡,然后返回到带有FragmentStatePagerAdapter的选项卡)。 当我第二次选择FragmentStatePagerAdapter的选项卡时,不会调用getItem方法。

我尝试使用相同的结果扩展FragmentStatePagerAdapter和FragmentPagerAdapter。我宁愿使用FragmentPagerAdapter来解决可用性问题,因为我只有3个片段可以翻页。

这是我的一些代码。如果您需要其他代码,请与我们联系:

public class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter
{       
    TrendsLV[] arrayOfTrendsFragments;

    public ScreenSlidePagerAdapter(FragmentManager fragmentManager)
    {

        super(fragmentManager);

        arrayOfTrendsFragments = new TrendsLV[NUM_PAGES];
        arrayOfTrendsFragments[0] = new TrendsLV(arrayOfMonths, 0);
        arrayOfTrendsFragments[1] = new TrendsLV(arrayOfMonths, 1);
        arrayOfTrendsFragments[2] = new TrendsLV(arrayOfMonths, 2);
    }

    @Override
    public Fragment getItem(int position) 
    {                       
        return arrayOfTrendsFragments[position];
    }

    @Override
    public int getCount() 
    {
        return NUM_PAGES;
    }   
}

如何调用上面的代码:

public class TrendsPagerHolder extends Fragment implements ResultsListener
{
private void displayData()
{
    if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
    {   
        if (pagerAdapter == null)
            pagerAdapter = new ScreenSlidePagerAdapter(getFragmentManager());

        pager.setAdapter(pagerAdapter);
        pager.setCurrentItem(0);
    }
}
}

我也希望这不是重复。我发现了FragmentStatePagerAdapter的其他问题,但没有解决我特定问题的任何问题。

谢谢。

1 个答案:

答案 0 :(得分:0)

我很确定在getItemPosition(Object object)中返回POSITION_NONE可以解决您的问题:

public int getItemPosition(Object object){
    return POSITION_NONE;
}

more info