繁体   English   中英

FragmentPagerAdapter在ViewPager中错误地显示片段

[英]FragmentPagerAdapter showing fragments wrongly in ViewPager

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

问题:

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

ActionBarActvityonCreate()中,我具有:

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);
    }
}

我使用静态工厂方法实例化了MyFragment ,并将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()加载器。 我在LoaderManager.LoaderCallbacks<Cursor> onLoadFinished()中更新列表视图的适配器。

我认为问题是由于在创建片段的视图之后Loader完成了工作。 当我期望有两个页面和两个片段时记录:

04-01 23:15:55.707 D/DebugTag﹕ getItem called
04-01 23:15:55.717 D/DebugTag﹕ getItem called
04-01 23:15:55.717 D/DebugTag﹕ on view created called
04-01 23:15:55.797 D/DebugTag﹕ on view created called
04-01 23:15:56.157 D/DebugTag﹕ on load finished called
04-01 23:15:56.177 D/DebugTag﹕ on load finished called

使用getItem()方法时,请扩展FragmentStatePagerAdapter 如果要保留它,则FragmentPagerAdapter重写instantiateItem()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM