gpt4 book ai didi

Android HoneyComb - 请求已经关闭的游标

转载 作者:行者123 更新时间:2023-11-30 03:53:24 25 4
gpt4 key购买 nike

我读了很多关于这个问题的问题,但我找不到正确的方向来解决我的问题,也许是因为我是菜鸟,迫切希望找到正确的方法......

据我所知,“requering already closed cursor”问题自 HoneyComb 以来就发生了,因为 startManagingCursor 已被弃用。并且由于 HoneyComb 我们应该使用与 ContentProvider 一起工作的 CursorLoader (我不使用也不想使用),并且发现有人写了一个类来使用 CursorLoader 而不使用 ContentProvider ( here )。

在我的应用程序中,我有一个 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;
}
}

在我的 Activity 中,我可以像这样读取数据:

    db = new repositorio(MainActivity.this);
Cursor c = db.listaBeneficios(PROPOSTA);
startManagingCursor(c);
address.setText(c.getString(c.getColumnIndex("address")));
db.close();

但我注意到,每当我按下后退按钮并返回 Activity A 时,它都会给出臭名昭著的“尝试重新查询一个已经关闭的游标”。我已经尝试过 stopManagingCursor 和 close() 而不是使用 startManagingCursor。这让我抓狂。

是否有任何可用的使用 CursorLoaders 的简单示例?如果我实现了 CursorLoaders,我能否继续使用上面的方法(即上面的 listaBeneficios())?这是class吗对我有帮助吗?我该如何实现?

感谢任何善意的帮助。

最佳答案

CursorLoader 将无法工作,因为它需要一个内容 URI。但是,您始终可以使用 LoaderAsyncTaskLoader . documentation对于这些类包含如何使用它们的示例。

关于Android HoneyComb - 请求已经关闭的游标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13754973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com