Jump to content

[TfgCollectionView] Приложение крашится


vcbous

Recommended Posts

На форме лежит 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
Link to comment
Share on other sites

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

Edited by vcbous
Link to comment
Share on other sites

  • Administrators

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

Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites

  • Recently Browsing   0 members

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