Android 在ListFragment的不同实例中保存适配器的状态

Android 在ListFragment的不同实例中保存适配器的状态,android,adapter,android-listfragment,Android,Adapter,Android Listfragment,我多次实例化了一个ListFragment,我想保存并恢复适配器的状态,以便正确执行“onListItemClick”方法 @Override public void onListItemClick(ListView l, View v, int position, long id) { mCallback.onPlaceClick(adapter.getItem(position)); } 当我第一次打开应用程序时,一切正常,但当我单击一个项目并创建另一个活动时,当我返回到该片段时,

我多次实例化了一个ListFragment,我想保存并恢复适配器的状态,以便正确执行“onListItemClick”方法

@Override
public void onListItemClick(ListView l, View v, int position, long id) {
    mCallback.onPlaceClick(adapter.getItem(position));
}
当我第一次打开应用程序时,一切正常,但当我单击一个项目并创建另一个活动时,当我返回到该片段时,项目处于其位置,但我在adapter.getItem()中获得IndexAutoBoundsException,它表示大小为0,但我可以看到列表中的元素

如何保存和恢复适配器对象的状态?(它是ListFragment类的一个实例字段)

看一看。如果实现此功能并填充
捆绑包
,则在重新创建片段时,该捆绑包将传递回您

如何将适配器的状态保存在捆绑包中是另一个问题。这取决于您,但例如,一种方法是使支持适配器的元素类可打包,并使用。在您的
onCreate()
方法中,您可以执行以下操作:

if (savedInstanceState != null && savedInstanceState.containsKey("myState")) {
  List<MyObj> objs = savedInstanceState.getParcelableArrayList("myState");
  myAdapter = new MyAdapter(..., objs, ...);
}
if(savedInstanceState!=null&&savedInstanceState.containsKey(“myState”)){
List objs=savedInstanceState.getParcelableArrayList(“myState”);
myAdapter=新的myAdapter(…,objs,…);
}

感谢您的回复,但我解决了只使用实例字段,避免使用任何静态字段的问题,在我的代码中问题就在于。。!