【发布时间】:2016-07-14 10:47:01
【问题描述】:
日志状态:
W/Filter(1629): An exception occured during performFiltering()!
W/Filter(1629): java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteDatabase: /data/data/com.example.bazadanych/databases/MyDb
W/Filter(1629): at android.database.sqlite.SQLiteClosable.acquireReference(SQLiteClosable.java:55)
W/Filter(1629): at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1156)
W/Filter(1629): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1032)
W/Filter(1629): at com.example.bazadanych.DBAdapter.fetchCountriesByName(DBAdapter.java:186)
W/Filter(1629): at com.example.bazadanych.MainActivity$2.runQuery(MainActivity.java:74)
W/Filter(1629): at android.support.v4.widget.CursorAdapter.runQueryOnBackgroundThread(CursorAdapter.java:397)
W/Filter(1629): at android.support.v4.widget.CursorFilter.performFiltering(CursorFilter.java:50)
W/Filter(1629): at android.widget.Filter$RequestHandler.handleMessage(Filter.java:234)
W/Filter(1629): at android.os.Handler.dispatchMessage(Handler.java:102)
W/Filter(1629): at android.os.Looper.loop(Looper.java:136)
W/Filter(1629): at android.os.HandlerThread.run(HandlerThread.java:61)
由于在主题中,当我返回 listview 说光标已关闭时,过滤器不会过滤。
使用加载器后剩下的唯一问题是,过滤器在移动到详细信息活动并返回到listview 后没有过滤。有什么想法吗?
这是过滤器:
public static Cursor fetchCountriesByName(String inputText) throws SQLException {
Log.w(TAG, inputText);
Cursor c = null;
if (inputText == null || inputText.length () == 0) {
c = db.query(DATABASE_TABLE, new String[] {KEY_ROWID,
KEY_NAME, KEY_COUNTRY, KEY_REGION, KEY_PHONE},
null, null, null, null, null);
} else {
c = db.query(true, DATABASE_TABLE, new String[] {KEY_ROWID,
KEY_NAME, KEY_COUNTRY, KEY_REGION, KEY_PHONE},
KEY_NAME + " like '%" + inputText + "%'", null,
null, null, null, null);
}
if (c != null) {
c.moveToFirst();
}
return c;
}
【问题讨论】:
-
@Selvin 现在更容易阅读了。
-
@PiyushGupta 谢谢,但不是我以前看过它