Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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
Android 试图重新查询已关闭的光标_Android_Sqlite_Cursor_Illegalstateexception - Fatal编程技术网

Android 试图重新查询已关闭的光标

Android 试图重新查询已关闭的光标,android,sqlite,cursor,illegalstateexception,Android,Sqlite,Cursor,Illegalstateexception,我只是做一些简单的查询,比如: Cursor c = databaseHelper.getReadableDatabase().rawQuery("select " + MyTable.TABLE_FIELD.getColumnName() + " from " + MyTable.TABLE_NAME, null); 之后,我提取所需的数据并填充一些视图 c.close(); 一切正常。我有一份分享意向,希望发送一封包含所示信息的电子邮件。java.lang.IllegalStateExc

我只是做一些简单的查询,比如:

Cursor c = databaseHelper.getReadableDatabase().rawQuery("select " + MyTable.TABLE_FIELD.getColumnName() + " from " + MyTable.TABLE_NAME, null);
之后,我提取所需的数据并填充一些视图

c.close();
一切正常。我有一份分享意向,希望发送一封包含所示信息的电子邮件。
java.lang.IllegalStateException
是在电子邮件应用程序发送电子邮件或关闭并且我的活动恢复“生命”后引发的。 只有在这种情况下才会引发此异常,如果我将其发送到后台,然后再次调用它,则不会引发此异常。我甚至想打开youtube并播放视频,但这个异常不会被抛出

我真的不知道为什么会这样

谢谢你抽出时间


ps:我试过
//c.close()
但它也不起作用。

您可以使用
c.requery()
,但它在API级别11中被弃用

不要用这个。只需请求一个新光标,就可以执行此操作 异步,并在新光标出现后更新列表视图 回来

再次执行创建光标的查询,刷新其 目录这可以在任何时候进行,包括在致电 停用()。因为此方法可以在数据库上执行查询 并且可能需要一段时间,如果调用它,可能会导致ANR 主(UI)线程。如果正在使用此方法,则会打印警告 在主线程上执行


我找到了导致这个问题的原因。电子邮件的一些信息是由“utils”类的另一个游标提供的。此光标在向电子邮件提供信息后关闭,这是导致问题的原因。而不是
c.close()
I改为
c=null现在它开始工作了

也许不是最好的解决方案,但目前它正在发挥作用。 谢谢。

这对我很有效

public void onBackPressed() {

    Intent i = new Intent(getApplicationContext(), ClassName.class);
    startActivity(i);
    finish();
    super.onStop();

}

我认为最好的政策是这样的:对,但你的问题有所不同;)