我想要一个分页布局,其中每个页面都是一个带有项目列表的片段。数据来自单个调用中的Web服务,并将被分隔(例如,通过关键字)到一个或多个列表中。扩展片段中的FragmentInstantiationException
我的尝试是使用ViewPager创造了“经理”:
其具有(阵列)适配器列表和片段列表。片段的实例:
class Page extends SherlockListFragment implements OnScrollListener
与构造:
public Page(PagesManager manager, int id)
该课程引起FragmentInstantiationException;我可以通过其他方式将引用和id传递给页面,并留下一个空的构造函数,但即使我在适配器上调用notifyDataSetChanged(),也不会重新绘制列表。所以我的问题是,如何让具有不同属性的相同Fragment类的多个实例(ViewPager中的页面数量需要可定制)能够在系统重新实例化后恢复其配置?我意识到这可能是太笼统了,但我觉得我的问题是设计,我确实有代码工作正常,除非片段被旋转销毁后,或者如果应用程序在后台太长。
编辑 这是适配器:
public DiscoverPagesManager(Context context, FragmentManager fm) {
super(fm);
pages = new ArrayList<Fragment>();
pages.add(new SearchPage());
adapters = new ArrayList<DiscoverListAdapter>();
adapters.add(null);
notes = new ArrayList<List<Note>>();
notes.add(null);
DiscoverPage page;
for(int i=1; i<titles.length; i+=1) {
page = new DiscoverPage(this, i);
this.pages.add(page);
this.adapters.add(new DiscoverListAdapter(context, this, i));
this.notes.add(null);
}
和
@Override
public Fragment getItem(int position) {
return this.pages.get(position);
}
您可以发布您完全适配器类,你是如何创建适配器的实例? – LuxuryMode
谢谢@LuxuryMode添加了代码 – miki