gpt4 book ai didi

android - java.lang.IllegalStateException : attempt to re-open an already-closed object: android. 数据库.sqlite.SQLiteQuery

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:10:01 24 4
gpt4 key购买 nike

大家好

我有一个错误,我不知道哪里出了问题

这是我的日志错误

java.lang.IllegalStateException: attempt to re-open an already-closed object: android.database.sqlite.SQLiteQuery (mSql = SELECT display_name, _id FROM view_data_restricted data WHERE (1) AND (data1 =? AND mimetype='vnd.android.cursor.item/group_membership' AND display_name like '%r%') ORDER BY display_name)

这是我的代码

public Cursor runQuery(CharSequence constraint) {
filter = nome.getText().toString();

try{
tempCurs = getContentResolver().query(ContactsContract.Groups.CONTENT_URI,
new String[]{ContactsContract.Groups._ID,ContactsContract.Groups.TITLE},
ContactsContract.Groups.ACCOUNT_NAME + " =? " + " AND " + ContactsContract.Groups.TITLE + " !=? ",
new String[]{accountName,nomeGrupo},
null
);
if(tempCurs.moveToFirst())
do{
cursorContactosGrupos = getContentResolver().query(ContactsContract.Data.CONTENT_URI,
new String[]{ContactsContract.CommonDataKinds.GroupMembership.DISPLAY_NAME, ContactsContract.CommonDataKinds.GroupMembership._ID},
ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID + " =? AND " + Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE + "' AND " + ContactsContract.CommonDataKinds.GroupMembership.DISPLAY_NAME + " like '%" + filter + "%'" ,
new String[]{String.valueOf(tempCurs.getLong(0))},
ContactsContract.CommonDataKinds.GroupMembership.DISPLAY_NAME
);
//Log.w(SocioEdit.class.getName(), "->" + cursorContactosGrupos.getString(cursorContactosGrupos.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME)));
}while(tempCurs.moveToNext());
}finally{
if(cursorContactosGrupos != null && tempCurs != null && !cursorContactosGrupos.isClosed() && !tempCurs.isClosed()){
cursorContactosGrupos.close();
tempCurs.close();
}
}
return cursorContactosGrupos;
}
});

我做错了什么?如何解决?感谢帮助

最佳答案

错误可能是因为您正在返回一个您已经在 finally block 中关闭的 Cursor,并且您可能正在尝试使用返回的值。

finally block 更改为以下内容:

finally{
if(tempCurs != null && !tempCurs.isClosed()){
tempCurs.close();
}
}

并记住从调用方法中关闭返回的 Cursor

关于android - java.lang.IllegalStateException : attempt to re-open an already-closed object: android. 数据库.sqlite.SQLiteQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11223132/

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