Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Close从未被显式调用_Java_Android - Fatal编程技术网

Java Close从未被显式调用

Java Close从未被显式调用,java,android,Java,Android,我有一个由sqlite db提供的listview。我在几个不同的点调用fillData()来更新listview private void fillData() { mDbHelper.open(); Cursor c = mDbHelper.fetchAllNotes(table, columns, selection, selectionArgs, null, null); startManagingCursor(c); S

我有一个由sqlite db提供的listview。我在几个不同的点调用fillData()来更新listview

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将永远不会填充。我试着把它们放在其他不同的地方,它给我的错误是游标/数据库已经关闭了。有什么想法吗?

如果所有内容都在一个活动中,只需打开数据库并在onCreate()中使用光标,然后在onDestroy()中关闭即可。 另一个选项是使用singleton或smoething,如果为null,则在操作之前打开数据库或游标


之所以会出现错误,是因为如果要完成对数据库的操作,就应该将其关闭。

首先,不推荐使用startManagingCursor方法。您可能希望删除该选项,然后将mDbHelper.close()放在}之后;如果我这样做,listview将被填充,但我会收到几个“结束未被停用或关闭的游标”错误。