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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android ScrollView http://www.cyberforum.ru/android-dev/thread1744713.html
Привет) Работаю со ScrollView у меня есть например 5 изображений, грубо говоря каждое отвечает за свой функционал, как при прокрутке мне получить индекс что я именно на этом изображение? То есть...
Программирование Android Нет никаких результатов работы программы Всем привет. Столкнулся с непонятной для меня проблемой, для вас она, возможно, окажется элементарной. Имеется приложение на андроид студио. При создании выбрана активити "tabbed activity".... http://www.cyberforum.ru/android-dev/thread1744673.html
При попытке открыть второй и третий Activity происходит завершение работы программы Программирование Android
Подскажите где ошибка. В программирование андроида пару дней. При попытке открыть второй и третий Activity происходит завершение работы программы. Activity_main <?xml version="1.0"...
Программирование Android Модель передачи не отправленных сообщений из сервиса
Пишу чат небольшой и все действия передача/прием в сервисе в отдельном потоке находятся, мне нужна адекватная модель передачи не отправленных сообщений, я тут прикинул пару вариантов: 1) Первое о...
Программирование Android GetContentResolver() внутри service http://www.cyberforum.ru/android-dev/thread1744615.html
При вызове этого метода из контекста service и application контекста обьект ContentResolver не выдает смс по запросу. Как решить данную проблему? Где взять нужный контекст?
Программирование Android Закрытие Snackbar Как сделать чтобы при первом нажатии на FloatingActionButton, Snackbar открывался, а при втором закрывался, а также при нажатии вне области Snackbar. Snackbar snackbar; FloatingActionButton fab =... подробнее

Показать сообщение отдельно
JulyYoung
0 / 0 / 0
Регистрация: 25.05.2016
Сообщений: 3

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

25.05.2016, 08:39. Просмотров 111. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru