Jump to content

Recommended Posts

Posted (edited)

На форме лежит CollectionView. Открываю модальную форму с помощью TfgAnimationHelper. На ней также есть CV. Произвожу операции над данными (или не провожу). Закрываю ее и иногда приложение падает.

Сначала я подумал, что виноват Callback, в котором я обновляю данные. Я закомментировал код в нем, но крэш не пропал. Вот что выдает adb logcat:

11-05 10:40:50.152: D/NativeListViewAdapter(9299): onViewRecycled
11-05 10:40:50.153: D/NativeListViewAdapter(9299): onViewRecycled
11-05 10:40:52.962: D/NativeListViewAdapter(9299): onViewRecycled
11-05 10:40:52.963: D/NativeListViewAdapter(9299): onBindViewHolder
11-05 10:40:54.655: D/NativeListViewAdapter(9299): onViewRecycled
11-05 10:40:54.656: D/NativeListViewAdapter(9299): onBindViewHolder
11-05 10:40:56.297: D/NativeListViewAdapter(9299): onViewRecycled
11-05 10:40:56.298: D/NativeListViewAdapter(9299): onBindViewHolder
11-05 10:40:58.023: D/AndroidRuntime(9299): Shutting down VM
11-05 10:40:58.024: E/AndroidRuntime(9299): FATAL EXCEPTION: main
11-05 10:40:58.024: E/AndroidRuntime(9299): Process: by.vcbrest.bloknot, PID: 9299
11-05 10:40:58.024: E/AndroidRuntime(9299): java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position 9(offset:9).state:86 android.support.v7.widget.RecyclerView{1ac694f VFED..... ........ 0,0-1220,429}, adapter:ru.fgx.view.listview.NativeListViewAdapter@9918dc, layout:android.support.v7.widget.GridLayoutManager@ceacde5, context:android.view.ContextThemeWrapper@ed3a0ba
11-05 10:40:58.024: E/AndroidRuntime(9299): 	at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5817)
11-05 10:40:58.024: E/AndroidRuntime(9299): 	at android.support.v7.widget.GapWorker.prefetchPositionWithDeadline(GapWorker.java:285)
11-05 10:40:58.024: E/AndroidRuntime(9299): 	at android.support.v7.widget.GapWorker.flushTaskWithDeadline(GapWorker.java:342)
11-05 10:40:58.024: E/AndroidRuntime(9299): 	at android.support.v7.widget.GapWorker.flushTasksWithDeadline(GapWorker.java:358)
11-05 10:40:58.024: E/AndroidRuntime(9299): 	at android.support.v7.widget.GapWorker.prefetch(GapWorker.java:365)
11-05 10:40:58.024: E/AndroidRuntime(9299): 	at android.support.v7.widget.GapWorker.run(GapWorker.java:396)
11-05 10:40:58.024: E/AndroidRuntime(9299): 	at android.os.Handler.handleCallback(Handler.java:751)
11-05 10:40:58.024: E/AndroidRuntime(9299): 	at android.os.Handler.dispatchMessage(Handler.java:95)
11-05 10:40:58.024: E/AndroidRuntime(9299): 	at android.os.Looper.loop(Looper.java:154)
11-05 10:40:58.024: E/AndroidRuntime(9299): 	at android.app.ActivityThread.main(ActivityThread.java:6119)
11-05 10:40:58.024: E/AndroidRuntime(9299): 	at java.lang.reflect.Method.invoke(Native Method)
11-05 10:40:58.024: E/AndroidRuntime(9299): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
11-05 10:40:58.024: E/AndroidRuntime(9299): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

 

Delphi 10.3.3, SDK 25.25, Android 7.1

зы. Сейчас попробовал отвязаться от данных на главной форме, заполнил статическими строками, крэш не ушел.

Edited by vcbous
Posted (edited)

Я не на тот CV подумал, судя по всему. Стал было демку делать, и заметил, что в модальной форме в onHide грохаю данные. Вроде в этом причина. Пока не падает.

Edited by vcbous
  • Administrators
Posted

TfgCollectionView очень чувствителен к рассинхронизации данных. Другими словами, если вы что-то меняете в данных, но не сообщаете об этом компоненту, то он может бросать исключения, чтобы информировать, что его состояние не соответствует реальности. Обычно в таких случаях нужно обязательно вначале проверить, что вы информируете компонент обо всех изменениях в данных. 

Posted
В 07.11.2020 в 17:08, Yaroslav Brovin сказал:

TfgCollectionView очень чувствителен к рассинхронизации данных. Другими словами, если вы что-то меняете в данных, но не сообщаете об этом компоненту, то он может бросать исключения, чтобы информировать, что его состояние не соответствует реальности. Обычно в таких случаях нужно обязательно вначале проверить, что вы информируете компонент обо всех изменениях в данных. 

Я когда java ошибку гуглил, то встречал информацию про notifyDatasetChanged. У нас это ReloadItems?

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...