Fixed
Status Update
Comments
an...@google.com <an...@google.com> #2
Hi. Thanks for reporting this. Fixed in alpha-04
sh...@google.com <sh...@google.com>
sh...@google.com <sh...@google.com> #3
Project: platform/frameworks/support
Branch: androidx-main
commit e782987543a9f8ccd485e970ddc74564b24378db
Author: Vighnesh Raut <vighnesh.raut13@gmail.com>
Date: Mon Jan 02 15:27:40 2023
fix: tab row crashes when only 1 tab is added
Bug: b/264018028
Test: Added unit test
Change-Id: I6381dbac304fc1d69d3708c6655f8b595668e93f
M tv/tv-material/src/androidTest/java/androidx/tv/material/TabRowTest.kt
M tv/tv-material/src/main/java/androidx/tv/material/TabRow.kt
https://android-review.googlesource.com/2373449
Branch: androidx-main
commit e782987543a9f8ccd485e970ddc74564b24378db
Author: Vighnesh Raut <vighnesh.raut13@gmail.com>
Date: Mon Jan 02 15:27:40 2023
fix: tab row crashes when only 1 tab is added
Bug:
Test: Added unit test
Change-Id: I6381dbac304fc1d69d3708c6655f8b595668e93f
M tv/tv-material/src/androidTest/java/androidx/tv/material/TabRowTest.kt
M tv/tv-material/src/main/java/androidx/tv/material/TabRow.kt
ap...@google.com <ap...@google.com> #5
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.tv:tv-material:1.0.0-alpha04
Description
Basically what happens is when you have some postponed loading like asynchronously loading the image inside an item of AdapterList and you scroll sometimes it crashes and you there is no workaround.
It is not stable reproducible but I come up with a simple repro app(and you can see the logs here as well):
What happens as I understand:
In PointerInputEventProcessor you first collect all PointerInputFilters which were hit(for example in our case is and AdapterList itself and the clickable item inside it)
Then inside AdapterList onDrag callback we synchronously subcompose which means that the AdapterList's item could recompose and apply a new modifier(for example update the background color).
And then we execute dispatchChanges on a modifier which was already detached.
We just discussed it during the sync, but seems like the simplest workaround is to add inside Node.dispatchChanges() something like
if (!pointerInputFilter.isAttached) {
return false
}