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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.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_Sqliteopenhelper_Android Cursor_Android Cursorloader - Fatal编程技术网

Android蜂巢-重新查询已关闭光标

Android蜂巢-重新查询已关闭光标,android,sqlite,sqliteopenhelper,android-cursor,android-cursorloader,Android,Sqlite,Sqliteopenhelper,Android Cursor,Android Cursorloader,我读了很多关于这个问题的问题,但我找不到解决问题的正确方向,可能是因为我没有找到正确的方法,感到绝望 据我所知,“重新查询已关闭的游标”问题自HoneyComb之后发生,因为startManagingCursor已被弃用。由于Honeycom我们应该使用与ContentProvider一起工作的CursorLoader(我不使用,也不想使用),并且发现有人编写了一个类来使用CursorLoader,而不使用ContentProvider() 在我的应用程序中,我有一个mySQLiteHelper

我读了很多关于这个问题的问题,但我找不到解决问题的正确方向,可能是因为我没有找到正确的方法,感到绝望

据我所知,“重新查询已关闭的游标”问题自HoneyComb之后发生,因为
startManagingCursor
已被弃用。由于Honeycom我们应该使用与
ContentProvider
一起工作的
CursorLoader
(我不使用,也不想使用),并且发现有人编写了一个类来使用
CursorLoader
,而不使用
ContentProvider
()

在我的应用程序中,我有一个mySQLiteHelper类,我有很多方法从
SQLite
检索数据,如下所示:

    public Cursor listaBeneficios(String id) {
    String where = "proposta=?";
    String[] whereArgs = {id};
    String[] campos = {"pessoa"};
    Cursor c = db.query(TABLE_BENEFICIOS, campos, where, whereArgs, null, null, null, null);
    if (c.moveToFirst()) {
        return c;
    } else {
        return null;
    }
}
在我的
活动中
,我可以读取如下数据:

    db = new repositorio(MainActivity.this);
    Cursor c = db.listaBeneficios(PROPOSTA);
    startManagingCursor(c);
    address.setText(c.getString(c.getColumnIndex("address")));
    db.close();
但我注意到,每当我点击后退按钮并返回活动a时,就会出现臭名昭著的“试图重新查询一个allready关闭的游标”。 我已经准备好停止管理游标并关闭()而不使用startManagingCursor。 这让我快发疯了

是否有使用
游标加载程序的简单示例
? 如果我实现了
游标加载程序
,我是否能够继续使用上述方法(即上面的listaBeneficios())? 这对我有帮助吗?我如何实现它


感谢任何帮助。

游标加载程序无法工作,因为它需要内容URI。但是,您始终可以使用or。这些类的包含如何使用它们的示例。

游标加载程序不起作用,因为它需要内容URI。但是,您始终可以使用or。这些类的示例包含如何使用它们的示例。

在我的例子中,我使用managedQuery从ContentProvider返回一个游标到我的活动。我只是更改了对getContentResolver()的调用。查询并解决了问题


在Eclipse中执行一个控件H以交换所有需要的更改。

在我的例子中,我使用managedQuery从ContentProvider返回一个游标到我的活动。我只是更改了对getContentResolver()的调用。查询并解决了问题


在Eclipse中使用控件H来交换所有需要的更改。

startManagingCursor(c)
被弃用是因为:)lol我知道:)但是我如何解决这个问题呢?我是否能够继续使用我现有的方法使用游标加载程序从sqlite检索数据?如果是,怎么做?最简单的方法是使用无管理游标方法。只需自己打开和关闭光标。否则,请使用您链接的加载程序,并实现加载程序回调,如中所示。请检查以下内容:@Tudor感谢所有这些链接,但我也可以使用谷歌,正如我所说,我已经读了很多关于这方面的内容,我不想使用内容提供商(如果可能)
startManagingCursor(c)
被弃用的原因是:)哈哈,我知道:)但我该如何解决这个问题呢?我是否能够继续使用我现有的方法使用游标加载程序从sqlite检索数据?如果是,怎么做?最简单的方法是使用无管理游标方法。只需自己打开和关闭光标。否则,请使用您链接的加载程序,并实现加载程序回调,如中所示。请检查以下内容:@Tudor感谢所有这些链接,但我也可以使用谷歌,正如我所说,我已经读了很多关于这方面的内容,我不想使用内容提供商(如果可能的话)