从未明确调用过关闭

时间:2011-04-18 19:15:52

标签: java android

我有一个由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永远不会填充。我已经尝试将它们放在其他各个地方并且它给出了错误,说光标/数据库已经关闭。关于该怎么做的任何想法?

1 个答案:

答案 0 :(得分:2)

如果一切都在一个Activity中,只需在onCreate()中打开数据库和光标,然后在onDestroy()中关闭。 另一种选择是使用singleton或smoething,如果它为null,它将在操作之前打开数据库或游标。

引起错误是因为如果要在数据库上完成操作,则应关闭它。