【发布时间】:2014-02-09 16:53:35
【问题描述】:
我有 ListFragment(来自支持包),我正在尝试将适配器与 Sprinkles 库(CursorList)一起使用。一切正常,直到我改变屏幕方向。然后我得到异常:
java.lang.IllegalStateException: 尝试重新打开一个已经关闭的对象:SQLiteQuery: select * from MyTable
我的灵感来自 github (https://github.com/emilsjolander/sprinkles/tree/master/sample) 上的示例应用程序。
示例查询在 Activity 的 onCreate 函数中注册,我在我的 ListFragment 的 onAttach 函数中注册它。
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
...
...
adapter = new MyAdapter(getActivity());
Query.many(MyClass.class, "select * from myTable")
.getAsync(getLoaderManager(), onMyClassLoaded, MyClass.class);
}
我的回调与示例一相同。
private ManyQuery.ResultHandler<MyClass> onMyClassLoaded =
new ManyQuery.ResultHandler<MyClass>() {
@Override
public boolean handleResult(CursorList<MyClass> result) {
adapter.swapCursorList(result);
return true;
}
};
我调试方向更改后发生的情况,回调 onMyClassLoaded 被调用两次(有时甚至更多次),但第一次创建适配器调用 onMyClassLoaded 仅一次。问题是为什么在方向改变后回调函数被调用的次数更多。
任何澄清此问题的帮助将不胜感激!
【问题讨论】:
标签: android android-fragments android-listfragment android-cursor