我执行某些数据库操作,然后将Cursor附加到SimpleCursorAdapter以在ListActivity上显示List。如果我在finally块中关闭光标(或在下面的代码之后的任何地方),列表中不会显示任何内容
SimpleCursorAdapter scAdapter = new SimpleCursorAdapter(this,
R.layout.list_row, cursor,
new String[] { Constants.KEY_TITLE }, new int[] { R.id.text1 });
如果光标没有关闭,当活动向另一个活动发出请求或被钝化时,Android会抛出异常。
PS我尝试在onPause()中关闭游标,但是在调用onPause之前android会抱怨。
答案 0 :(得分:4)
你必须在你的finally块上打开光标。
你错过了参加你的活动。
startManagingCursor(cursor);
这将确保活动为您管理光标。
答案 1 :(得分:3)
我通过动态创建光标来解决这个问题。似乎SimpleCursorAdapter将为您管理光标。
SimpleCursorAdapter scAdapter = new SimpleCursorAdapter(this,
R.layout.list_row, db.query(...),
new String[] { Constants.KEY_TITLE }, new int[] { R.id.text1 });
此外,自Pentium10发布以来,startManagingCursor已被弃用。
答案 2 :(得分:0)
这只能解决部分问题。当我启动ManagingCursor(光标);并按菜单键> menuActivity然后>后面的钥匙我得到了:
ERROR/Cursor(4047): Invalid statement in fillWindow()