[英]FragmentPagerAdapter showing fragments wrongly in ViewPager
我有一个ActionBarActivity
里面有一个ViewPager
。 我希望在四个(第一,第二,第三,第四)页面中看到四个(第一,第二,第三,四个)片段。
问题:
在ActionBarActvity
的onCreate()
中,我具有:
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.