Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
JulyYoung
0 / 0 / 0
Регистрация: 25.05.2016
Сообщений: 3
#1

Ошибка "attempt to re-open an already-closed object: sqlitequery:" - Программирование Android

25.05.2016, 08:39. Просмотров 154. Ответов 0

Доброе утро!

Реализую подсказки для SearchView. Курсор для подсказки заполняется в след. методе MainActivity:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@Override
public boolean onQueryTextChange(String newText) {
 
        if(newText.length() >= 3) {
 
            Uri suggestionsUri = PharmacyContract.SUGGESTION_URI;
            Cursor cursor = getContentResolver().query(suggestionsUri,
                        PharmacyContract.CatalogEntry.CATALOG_COLUMNS,
                        null,
                        new String[]{newText},
                        null); // где-то здесь вылетает ошибка
 
            mSearchAdapter.changeCursor(cursor);
        }
        else
            mSearchAdapter.changeCursor(null);
 
        return true;
    }
Соответствующий метод ContentProvider:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
@Override
    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
 
        Cursor cursor;
        switch (mUriMatcher.match(uri)) {
 
            case CATALOG:
                cursor = mDBHelper.getReadableDatabase().query(
                        PharmacyContract.CatalogEntry.TABLE_NAME,
                        projection,
                        selection,
                        selectionArgs,
                        null,
                        null,
                        sortOrder);
                break;
 
            case CATALOG_SUGGESTIONS:
                cursor = getSuggestions(selectionArgs);
                break;
 
            default:
                throw new UnsupportedOperationException("Unknown uri: " + uri);
        }
 
        return cursor;
    }
 
private Cursor getSuggestions(String[] selectionArgs) {
 
        String selection = PharmacyContract.CatalogEntry.COLUMN_SEARCH_STR + " LIKE ? ";
 
        if(selectionArgs != null) {
            selectionArgs[0] = "%" + selectionArgs[0] + "%";
        }
 
        SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder();
        queryBuilder.setTables(PharmacyContract.CatalogEntry.TABLE_NAME);
        queryBuilder.setProjectionMap(mAliasMap);
 
        Cursor cursor = queryBuilder.query(mDBHelper.getReadableDatabase(),
                    new String[]{PharmacyContract.CatalogEntry.COLUMN_ID,
                            SearchManager.SUGGEST_COLUMN_TEXT_1},
                    selection,
                    selectionArgs,
                    null,
                    null,
                    null,
                    null);
 
        return cursor;
    }
Периодически при введении текста, стирания его и введении снова в SeacrhView возникает ошибка: "attempt to re-open an already-closed object: sqlitequery:". Нигде курсор я явно не закрываю. В changeCursor() предполагается, что старый курсор закрывается, но я пробовал менять на swapCursor() - такая же ситуация. Причем, исключение "плавающее", может возникнуть сразу, а может и через некоторое время.

Что можно еще посмотреть/попробовать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2016, 08:39
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ошибка "attempt to re-open an already-closed object: sqlitequery:" (Программирование Android):

"Attempt to re-open an already-closed object" при работе с SQLite
Добрый день. Разрабатываю приложение и столкнулся с проблемой... Лог выдаёт вот...

Ошибка Attempt to invoke virtual method on a null object reference
Выдает ошибку. Никак не могу понять в чем проблема. Помогите плиз. Лог ошибки:...

Ошибка Attempt to invoke virtual method on a null object reference
Здравствуйте, создаю приложение, которое работает с firebase. При отправке...

При нажатии на кнопку выходит ошибка "Attempting to invoke method on a null object reference"
Доброго дня! Есть вот этот код. При нажатии на кнопку Add выдает Attempting to...

Ошибка "Unknown method "e" of "org.apache.commons.logging.Log"
Unknown method 'e' of 'org.apache.commons.logging.Log' package...

Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры"
Ребят, всем привет! накидайте какие-нить идеи по реализации ситуация такая...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2016, 08:39
Привет! Вот еще темы с решениями:

Ошибка "Gradle"MyApplication" projectrefresh failed
Всем доброго вечера. Только начинаю писать под андроид, и на одном из первых...

Постепенно вывести на экран слово "Java", в котором буквы состоят из "интересных" элементов
Я учусь в универе и вот пытаюсь делать лабораторные по языку java, только на...

Выбор платформы разработки "1С Мобильная платформа" или "Android Studio"
Всем, здравствуйте! Есть задача по разработке клиента для терминала сбора...

При эмулировании вместо надписи "Hello world" отображается "android"
Привет форумчане! Я только-только начинал программировать на андроиде. Поставил...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru