Аватар для dajver
411 / 275 / 22
Регистрация: 18.09.2010
Сообщений: 1,114

Attempting to access a closed CursorWindow

30.04.2015, 11:12. Показов 1787. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Второй вопрос за день) Это рекорд наверное, но все не так просто, столкнулся с проблемой в чужом проекте. Куча курсоров, писали видать давно, или кто то сильно любит мазохизм ну в общем.

Один раз обращаюсь к бд через курсор все ок, второй раз когда обращаюсь ничего не обновляя и ничего не делая, просто делаю второй запрос то приложение выдает ошибки не указывающие ни на что конкретное...

Кликните здесь для просмотра всего текста
android.database.StaleDataException: Attempting to access a closed CursorWindow.Most probable cause: cursor is deactivated prior to calling this method.
at android.database.AbstractWindowedCursor. checkPosition(AbstractWindowedCursor.jav a:139)
at android.database.AbstractWindowedCursor. getLong(AbstractWindowedCursor.java:74)
at android.database.CursorWrapper.getLong(C ursorWrapper.java:106)
at android.support.v4.widget.CursorAdapter. getItemId(CursorAdapter.java:226)
at android.widget.AbsListView$RecycleBin.re trieveFromScrap(AbsListView.java:6778)
at android.widget.AbsListView$RecycleBin.ge tScrapView(AbsListView.java:6517)
at android.widget.AbsListView.obtainView(Ab sListView.java:2346)
at android.widget.GridView.onMeasure(GridVi ew.java:1060)
at in.srain.cube.views.GridViewWithHeaderAn dFooter.onMeasure(GridViewWithHeaderAndF ooter.java:90)
at android.view.View.layout(View.java:15658 )
at android.view.ViewGroup.layout(ViewGroup. java:5038)
at android.support.v4.widget.SwipeRefreshLa yout.onLayout(SwipeRefreshLayout.java:54 3)
at android.view.View.layout(View.java:15671 )
at android.view.ViewGroup.layout(ViewGroup. java:5038)
at android.widget.FrameLayout.layoutChildre n(FrameLayout.java:579)
at android.widget.FrameLayout.onLayout(Fram eLayout.java:514)
at android.view.View.layout(View.java:15671 )
at android.view.ViewGroup.layout(ViewGroup. java:5038)
at android.widget.LinearLayout.setChildFram e(LinearLayout.java:1703)
at android.widget.LinearLayout.layoutVertic al(LinearLayout.java:1557)
at android.widget.LinearLayout.onLayout(Lin earLayout.java:1466)
at android.view.View.layout(View.java:15671 )
at android.view.ViewGroup.layout(ViewGroup. java:5038)
at android.widget.FrameLayout.layoutChildre n(FrameLayout.java:579)
at android.widget.FrameLayout.onLayout(Fram eLayout.java:514)
at android.view.View.layout(View.java:15671 )
at android.view.ViewGroup.layout(ViewGroup. java:5038)
at com.android.internal.widget.ActionBarOve rlayLayout.onLayout(ActionBarOverlayLayo ut.java:494)
at android.view.View.layout(View.java:15671 )
at android.view.ViewGroup.layout(ViewGroup. java:5038)
at android.widget.FrameLayout.layoutChildre n(FrameLayout.java:579)
at android.widget.FrameLayout.onLayout(Fram eLayout.java:514)
at android.view.View.layout(View.java:15671 )
at android.view.ViewGroup.layout(ViewGroup. java:5038)
at android.view.ViewRootImpl.performLayout( ViewRootImpl.java:2086)
at android.view.ViewRootImpl.performTravers als(ViewRootImpl.java:1843)
at android.view.ViewRootImpl.doTraversal(Vi ewRootImpl.java:1061)
at android.view.ViewRootImpl$TraversalRunna ble.run(ViewRootImpl.java:5885)
at android.view.Choreographer$CallbackRecor d.run(Choreographer.java:767)
at android.view.Choreographer.doCallbacks(C horeographer.java:580)
at android.view.Choreographer.doFrame(Chore ographer.java:550)
at android.view.Choreographer$FrameDisplayE ventReceiver.run(Choreographer.java:753)
at android.os.Handler.handleCallback(Handle r.java:739)
at android.os.Handler.dispatchMessage(Handl er.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(Activity Thread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.j ava:372)
at com.android.internal.os.ZygoteInit$Metho dAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main( ZygoteInit.java:698)


Как решить без понятия, с курсорами работал давно и уже не помню что к чему. Погуглив нашел кучу ответов что вот так делать не хорошо

Java
1
2
3
4
5
@Override
    public void onLoadFinished(Loader<Cursor> cursorLoader, Cursor cursor) {
        mAdapter.swapCursor(cursor);
        mAdapter.notifyDataSetChanged();
    }
А без этого не работает) Может кто сталкивался и знает как эту ошибку можно пофиксить?)

Добавлено через 13 часов 8 минут
Неужели никто не сталкивался с этой фигней непонятной?)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.04.2015, 11:12
Ответы с готовыми решениями:

Attempting to execute an operation on a closed EntityManagerFactory
Создаю dataTable: &lt;h:dataTable value=&quot;#{friend.list}&quot; var=&quot;f2&quot;&gt; &lt;h:column&gt; &lt;f:facet...

БД Access ошибка Cannot Perform this operation on a closed dataset
Добрый день...никак не получается исправить ошибку &quot;Can'nt Perform this operation on a closed dataset&quot;. Дело в том, что первый...

The underlying connection was closed: The connection was closed unexpectedly
Доброго времени суток. У меня возникает проблема при отправке Post запроса. Вот фрагмент кода: byte ByteArr =...

10
210 / 210 / 60
Регистрация: 22.08.2014
Сообщений: 644
30.04.2015, 11:44
В принципе вызов

Java
1
mAdapter.notifyDataSetChanged();
лишний, поскольку mAdapter.swapCursor(cursor) сам его вызывает...
1
 Аватар для dajver
411 / 275 / 22
Регистрация: 18.09.2010
Сообщений: 1,114
30.04.2015, 11:49  [ТС]
Цитата Сообщение от Armagedo Посмотреть сообщение
лишний, поскольку mAdapter.swapCursor(cursor) сам его вызывает...
Но падает не из за него =( Вот когда закомментируешь
Java
1
mAdapter.swapCursor(cursor);
, падать перестает, но и работать перестает так же)
0
210 / 210 / 60
Регистрация: 22.08.2014
Сообщений: 644
30.04.2015, 11:54
Для началу влепи-ка ты ему маячок на закрытость...

Java
1
2
3
4
5
6
7
8
@Override
    public void onLoadFinished(Loader<Cursor> cursorLoader, Cursor cursor) {
        if (cursor.isClosed())
                Toast.makeText(находим контекст, "Cursor is closed", Toast.LENGTH_SHORT).show();
        else
                mAdapter.swapCursor(cursor);
         
    }
1
 Аватар для dajver
411 / 275 / 22
Регистрация: 18.09.2010
Сообщений: 1,114
30.04.2015, 11:58  [ТС]
Цитата Сообщение от Armagedo Посмотреть сообщение
Для началу влепи-ка ты ему маячок на закрытость...
Походу курсор не закрывается, потому что приложение так же падает, но ни тоста, ни в логе ничего нет когда я пытаюсь вывести. Значит причина не в этом.
0
210 / 210 / 60
Регистрация: 22.08.2014
Сообщений: 644
30.04.2015, 12:32
Лучший ответ Сообщение было отмечено dajver как решение

Решение

Нуна шерстить по коду тогда, где что происходит, ибо ж неспроста оно..неспроста
Или на адаптер (и курсор) повесить DataSetObserver и последить, что происходит с ними в событиях этого обзёрвера.

Вообщем, шо тебе сказать...
1
 Аватар для Netscape
374 / 361 / 52
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
30.04.2015, 12:37
swapCursor заменить на changeCursor.
1
210 / 210 / 60
Регистрация: 22.08.2014
Сообщений: 644
30.04.2015, 12:41
Netscape,

Change the underlying cursor to a new cursor. If there is an existing cursor it will be closed.
Parameters:
cursor The new cursor to be used
311
312 public void changeCursor(Cursor cursor) {
313 Cursor old = swapCursor(cursor);
314 if (old != null) {
315 old.close();
316 }
317 }
1
 Аватар для dajver
411 / 275 / 22
Регистрация: 18.09.2010
Сообщений: 1,114
30.04.2015, 12:48  [ТС]
Цитата Сообщение от Netscape Посмотреть сообщение
swapCursor заменить на changeCursor.
Цитата Сообщение от Armagedo Посмотреть сообщение
Netscape,
Change the underlying cursor to a new cursor. If there is an existing cursor it will be closed.
Parameters:
cursor The new cursor to be used
311
312 public void changeCursor(Cursor cursor) {
313 Cursor old = swapCursor(cursor);
314 if (old != null) {
315 old.close();
316 }
317 }
Та же самая ошибка) Не помогло)
0
400 / 343 / 85
Регистрация: 17.10.2014
Сообщений: 1,014
30.04.2015, 12:50
Цитата Сообщение от dajver Посмотреть сообщение
at in.srain.cube.views.GridViewWithHeaderAn dFooter.onMeasure(GridViewWithHeaderAndF ooter.java:90)
а тут ничего нет?
1
 Аватар для dajver
411 / 275 / 22
Регистрация: 18.09.2010
Сообщений: 1,114
30.04.2015, 13:17  [ТС]
Цитата Сообщение от androbro Посмотреть сообщение
а тут ничего нет?
Это кастомный гридвью из либы https://github.com/etao-open-source/cube-sdk

Добавлено через 24 минуты
В общем сделал все по другому, сделал что бы вытаскивало данные в адаптер кастомный, и из него уже показываю все что мне надо... Костыль но зато работает) Свап курсор плохой
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.04.2015, 13:17
Помогаю со студенческими работами здесь

Ошибка An error occured while attempting to initialize the Borland Database Engine (error $251E)
Достал нужную мне програмку , которую искал очень долго . Она написана то ли под Delphi 3.0 то ли Paradox 4.0. Вот попытался ее запустить,...

The Web server reported the following error when attempting to create or open the WEB project located at the following URL:...
Привет всем. Установил на 2003сервере Visual Studio Net - 2003. Решил создать новый проект для C# web Aplication (проще говоря Веб...

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

closed
closed

"An error occurred while attempting to initialize the Borland Database Engine (error $210C)"
У меня вылезла ошибка: &quot;An error occurred while attempting to initialize the. Borland Database Engine. (error $210C)&quot; Нужная таблица в...


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

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

Новые блоги и статьи
Пишем адаптер для локального хранилища S3 на C#
stackOverflow 16.07.2025
Разработка современных приложений часто требует интеграции с объектными хранилищами, и Amazon S3 стал де-факто стандартом в этой области. Однако работа с облачными сервисами в процессе разработки. . .
Старые замки
kumehtar 16.07.2025
Смотрел тут фото, попались пара старых замков. И сразу бросилось в глаза из отличие. Например: Замок Бистон, в англии. Разрушенное сооружение. Но - не испорченное людьми, по крайней мере - на. . .
Java и Eclipse Store: Сверхбыстрые приложения с In-Memory DB
Javaican 15.07.2025
Eclipse Store — это микро-движок персистентности для Java, который позволяет хранить и извлекать нативные Java-объекты без необходимости преобразования данных или использования объектно-реляционного. . .
EmBitz, создание проекта, отладка, прошивка
locm 15.07.2025
Создание проекта для Blue Pill (STM32F103C8T6) в EmBitz 2. 30, написания кода blink, запуск отладки в ОЗУ, заливка релизной прошивки во flash используя ST-Link и др. . . .
Трассировка корутин Kotlin с OpenTelemetry
mobDevWorks 14.07.2025
Асинхронное программирование меняет правила игры, особенно когда речь заходит о трассировке операций. В Kotlin с его корутинами эта проблема приобретает особый оттенок, который я хотел бы детально. . .
Облачные приложения на Rust: руководство по архитектуре микросервисов
golander 13.07.2025
Когда я впервые взялся за проектирование облачной платформы для одного из наших клиентов, выбор стоял между привычными Go и Java. Но после нескольких месяцев разработки микросервисной системы,. . .
Как Node.js выполняет асинхронные операции
Reangularity 13.07.2025
Каждый раз, когда я рассказываю про Node. js, возникает один и тот же вопрос: "Как эта штука может быть быстрой, если JavaScript — однопоточный язык?" И это действительно кажется парадоксом. Ведь в. . .
Как писать чистый, тестируемый и качественный код на Python
py-thonny 12.07.2025
Помню свой первый проект на Python. Работал тогда быстро, грязно, лишь бы работало. Код был похож на запутанный клубок - переменные по одной букве, функции на 200 строк, комментарии отсутствовали как. . .
Blazor и контроллер сервопривода IoT Meadow Maple
Wired 11.07.2025
Я решил разобраться, как можно соединить современные веб-технологии с миром "железа". Интересная комбинация получилась из Blazor в качестве веб-интерфейса и микроконтроллера Meadow с его веб-сервером. . .
Генерация OpenQASM из кода Q#
EggHead 10.07.2025
Летом 2024-го я начал эксперименты с библиотекой Q# Bridge, и знаете что? Она оказалась просто находкой для тех, кто работает на стыке разных квантовых экосистем. Основная фишка этой библиотеки -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru