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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
dajver
410 / 274 / 18
Регистрация: 18.09.2010
Сообщений: 1,114
#1

Attempting to access a closed CursorWindow - Программирование Android

30.04.2015, 11:12. Просмотров 707. Ответов 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.java:139)
at android.database.AbstractWindowedCursor.getLong(AbstractWindowedCursor.java:74)
at android.database.CursorWrapper.getLong(CursorWrapper.java:106)
at android.support.v4.widget.CursorAdapter.getItemId(CursorAdapter.java:226)
at android.widget.AbsListView$RecycleBin.retrieveFromScrap(AbsListView.java:6778)
at android.widget.AbsListView$RecycleBin.getScrapView(AbsListView.java:6517)
at android.widget.AbsListView.obtainView(AbsListView.java:2346)
at android.widget.GridView.onMeasure(GridView.java:1060)
at in.srain.cube.views.GridViewWithHeaderAndFooter.onMeasure(GridViewWithHeaderAndFooter.java:90)
at android.view.View.layout(View.java:15658)
at android.view.ViewGroup.layout(ViewGroup.java:5038)
at android.support.v4.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:543)
at android.view.View.layout(View.java:15671)
at android.view.ViewGroup.layout(ViewGroup.java:5038)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
at android.view.View.layout(View.java:15671)
at android.view.ViewGroup.layout(ViewGroup.java:5038)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
at android.view.View.layout(View.java:15671)
at android.view.ViewGroup.layout(ViewGroup.java:5038)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
at android.view.View.layout(View.java:15671)
at android.view.ViewGroup.layout(ViewGroup.java:5038)
at com.android.internal.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:494)
at android.view.View.layout(View.java:15671)
at android.view.ViewGroup.layout(ViewGroup.java:5038)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
at android.widget.FrameLayout.onLayout(FrameLayout.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.performTraversals(ViewRootImpl.java:1843)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1061)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5885)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
at android.view.Choreographer.doCallbacks(Choreographer.java:580)
at android.view.Choreographer.doFrame(Choreographer.java:550)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.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)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.04.2015, 11:12
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Attempting to access a closed CursorWindow (Программирование Android):

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

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

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

Ошибка An error occured while attempting to initialize the Borland Database Engine (error $251E) - Delphi
Достал нужную мне програмку , которую искал очень долго . Она написана то ли под 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:... - .NET
Привет всем. Установил на 2003сервере Visual Studio Net - 2003. Решил создать новый проект для C# web Aplication (проще говоря Веб...

closed - Delphi
closed

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

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

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
410 / 274 / 18
Регистрация: 18.09.2010
Сообщений: 1,114
30.04.2015, 11:58  [ТС] #5
Цитата Сообщение от Armagedo Посмотреть сообщение
Для началу влепи-ка ты ему маячок на закрытость...
Походу курсор не закрывается, потому что приложение так же падает, но ни тоста, ни в логе ничего нет когда я пытаюсь вывести. Значит причина не в этом.
0
Armagedo
209 / 209 / 60
Регистрация: 22.08.2014
Сообщений: 644
30.04.2015, 12:32 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Нуна шерстить по коду тогда, где что происходит, ибо ж неспроста оно..неспроста
Или на адаптер (и курсор) повесить DataSetObserver и последить, что происходит с ними в событиях этого обзёрвера.

Вообщем, шо тебе сказать...
1
Netscape
374 / 361 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
30.04.2015, 12:37 #7
swapCursor заменить на changeCursor.
1
Armagedo
209 / 209 / 60
Регистрация: 22.08.2014
Сообщений: 644
30.04.2015, 12:41 #8
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
410 / 274 / 18
Регистрация: 18.09.2010
Сообщений: 1,114
30.04.2015, 12:48  [ТС] #9
Цитата Сообщение от 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
androbro
340 / 301 / 66
Регистрация: 17.10.2014
Сообщений: 884
30.04.2015, 12:50 #10
Цитата Сообщение от dajver Посмотреть сообщение
at in.srain.cube.views.GridViewWithHeaderAndFooter.onMeasure(GridViewWithHeaderAndFooter.java:90)
а тут ничего нет?
1
dajver
410 / 274 / 18
Регистрация: 18.09.2010
Сообщений: 1,114
30.04.2015, 13:17  [ТС] #11
Цитата Сообщение от androbro Посмотреть сообщение
а тут ничего нет?
Это кастомный гридвью из либы https://github.com/etao-open-source/cube-sdk

Добавлено через 24 минуты
В общем сделал все по другому, сделал что бы вытаскивало данные в адаптер кастомный, и из него уже показываю все что мне надо... Костыль но зато работает) Свап курсор плохой
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2015, 13:17
Привет! Вот еще темы с ответами:

Socket is closed вконтакте - Java Сети
Здравствуйте, никак не могу понять в чем проблема Exception in thread &quot;main&quot; java.net.SocketException: Socket is closed Коды :...

SQLException: Connection is closed - Java БД
Кто знает что за ошибка и с чем она связана? Connection pool реализован нормально, ошибка только на этой странице.

connection closed gracefully - Delphi
В программе 2 таймера, иногда выскакивает ошибка &quot;connection closed gracefully&quot; как это исправить? Программа может работать на 2 компах...

Connection Closed Gracefully - Delphi
Выскакивает ошибка указанная в заголовке темы! unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes,...


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

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

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