この問題に関する多くの質問を読みましたが、問題の正しい方向を見つけることができません。おそらく、私は初心者であり、正しい方法を見つけようと必死になっているためです...
私が読んだ限りでは、HoneyCombstartManagingCursor
が廃止されたため、「既に閉じたカーソルを要求する」問題が発生しています。そして、HoneyComb 以来、CursorLoader
動作する を使用する必要ContentProvider
があり (私は使用しませんし、使用したくありません)、誰かが( hereCursorLoader
)なしで使用するクラスを作成したことがわかりました。ContentProvider
私のアプリケーションでは、次のSQLite
ようなデータを取得するためのメソッドがたくさんある mySQLiteHelper クラスがあります。
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();
しかし、戻るボタンを押してアクティビティ A に戻るたびに、悪名高い「既に閉じているカーソルを再クエリしようとしている」というメッセージが表示されることに気付きました。これは私を夢中にさせています。
を使用した簡単な例はありますCursorLoaders
か? 実装した場合、上記のメソッド (つまり、上記の listaBeneficios()) を引き続き使用できCursorLoaders
ますか? このクラスは役に立ちますか? どうすれば実装できますか?
どんな親切な助けも大歓迎です。