我有一个像这样的复杂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的其他问题,但没有解决我特定问题的任何问题。
谢谢。
答案 0 :(得分:0)
我很确定在getItemPosition(Object object)中返回POSITION_NONE可以解决您的问题:
public int getItemPosition(Object object){
return POSITION_NONE;
}