Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование 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. Просмотров 100. Ответов 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 - Программирование Android
Добрый день. Разрабатываю приложение и столкнулся с проблемой... Лог выдаёт вот такое: FATAL EXCEPTION: main ...

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

Ошибка Attempt to invoke virtual method on a null object reference - Программирование Android
Здравствуйте, создаю приложение, которое работает с firebase. При отправке сообщения приложение вылетает public class Tab3Activity...

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

Ошибка "Unknown method "e" of "org.apache.commons.logging.Log" - Программирование Android
Unknown method 'e' of 'org.apache.commons.logging.Log' package com.mycompany.myapp; import android.widget.*; import...

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

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

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

Постепенно вывести на экран слово "Java", в котором буквы состоят из "интересных" элементов - Программирование Android
Я учусь в универе и вот пытаюсь делать лабораторные по языку java, только на свой телефон с помощью android studio )) До этого все...

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

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


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

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

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