设置为SimpleCursorAdapter时无法关闭光标

时间:2010-06-24 09:04:06

标签: android

我执行某些数据库操作,然后将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会抱怨。

3 个答案:

答案 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()