FragmentPagerAdapter在ViewPager中错误地显示了片段

时间:2015-04-01 14:21:51

标签: android android-fragments android-viewpager fragment fragmentpageradapter

我的ActionBarActivity里面有一个ViewPager。我希望在四个(第一,第二,第三,第四)页面中看到四个(第一,第二,第三,第四)片段。

问题:

  • 我在第一页看到了第二个片段。
  • 然后我转到第二页。什么都没见。
  • 然后我回到第一页。看到第二个片段。

onCreate()的{​​{1}}中,我有:

ActionBarActvity

这就是mViewPager = (ViewPager) findViewById(R.id.pager); mPagerAdapter = new MyPagerAdapter(getSupportFragmentManager(), mGoodArrayListOfWords); mViewPager.setAdapter(mPagerAdapter); 的样子:

MyPagerAdapter

我使用静态工厂方法实例化public class MyPagerAdapter extends FragmentPagerAdapter { private ArrayList<String> mWords; public MyPagerAdapter(FragmentManager fm, ArrayList<String> words) { super(fm); mWords = words; } @Override public Fragment getItem(int position) { String specificWord = mWords.get(position); return MyFragment.newInstance(specificWord); } @Override public int getCount() { return mWords.size(); } @Override public CharSequence getPageTitle(int position) { return mWords.get(position); } } ,并将no-arg构造函数设为私有:

MyFragment

此外,在 public static MyFragment newInstance(String word) { MyFragment fragment = new MyFragment(); Bundle args = new Bundle(); args.putString("WORD", word); fragment.setArguments(args); return fragment; } private MyFragment() { super(); } 中,我获得了片段列表视图的句柄,使用onViewOnCreated()LoaderManager加载器。我在init()的{​​{1}}中更新了列表视图的适配器。

我认为问题是由于onLoadFinished()在创建片段视图后完成了他们的工作。当我期待两个页面和两个片段时记录:

LoaderManager.LoaderCallbacks<Cursor>

1 个答案:

答案 0 :(得分:0)

在您使用FragmentStatePagerAdapter方法时扩展getItem()。如果您想保留FragmentPagerAdapter覆盖instantiateItem()