我有一个由sqlite db提供的listview。我在几个不同的点调用fillData()来更新列表视图。
private void fillData() {
mDbHelper.open();
Cursor c = mDbHelper.fetchAllNotes(table, columns, selection, selectionArgs, null, null);
startManagingCursor(c);
String[] from = new String[] { "quantity", "color", "style" };
int[] to = new int[] { R.id.textQuantity, R.id.textColor, R.id.textStyle };
setListAdapter(new SimpleCursorAdapter(this, R.layout.recordrow, c, from, to) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
return v;
}
});
}
有效......问题是,当我打开/关闭/跳转活动时,我在logcat中遇到错误。但它并没有使程序崩溃。错误是:
请确保明确调用光标上的close()
和
从未在数据库上明确调用close()<
所以在});如果我把mDbHelper.close()崩溃说数据库没有打开。如果我把c.close(),我的listview永远不会填充。我已经尝试将它们放在其他各个地方并且它给出了错误,说光标/数据库已经关闭。关于该怎么做的任何想法?
答案 0 :(得分:2)
如果一切都在一个Activity中,只需在onCreate()中打开数据库和光标,然后在onDestroy()中关闭。 另一种选择是使用singleton或smoething,如果它为null,它将在操作之前打开数据库或游标。
引起错误是因为如果要在数据库上完成操作,则应关闭它。