https://kotlinlang.org logo
#compose-android
Title
# compose-android
x

xoangon

10/06/2023, 11:47 AM
I'm hitting what it seems to be an internal Compose error when integrating an
AbstractComposeView
into a
ViewHolder
. I'm tied to an implementation based on
RecyclerView
, but I don't see the reason why this approach shouldn't work. The stack trace (in the 🧵 ) doesn't point out to any of our project packages/classes. It's all Android Internal
Copy code
E  FATAL EXCEPTION: main
    Process: com.app.debug, PID: 17408
    java.lang.IllegalArgumentException: Cannot round NaN value.
    	at kotlin.math.MathKt__MathJVMKt.roundToInt(MathJVM.kt:1165)
    	at androidx.compose.ui.unit.Density.roundToPx-0680j_4(Density.kt:75)
    	at androidx.compose.foundation.layout.RowColumnMeasurementHelper.measureWithoutPlacing-_EkL_-Y(RowColumnMeasurementHelper.kt:89)
    	at androidx.compose.foundation.layout.RowColumnImplKt$rowColumnMeasurePolicy$1.measure-3p2s80s(RowColumnImpl.kt:71)
    	at androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0(InnerNodeCoordinator.kt:126)
    	at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke(LayoutNodeLayoutDelegate.kt:1499)
    	at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke(LayoutNodeLayoutDelegate.kt:1495)
    	at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:2299)
    	at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:467)
    	at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:230)
    	at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:133)
    	at androidx.compose.ui.node.OwnerSnapshotObserver.observeMeasureSnapshotReads$ui_release(OwnerSnapshotObserver.kt:113)
    	at androidx.compose.ui.node.LayoutNodeLayoutDelegate.performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:1495)
    	at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:35)
    	at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:560)
    	at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.measure-BRTryo0(LayoutNodeLayoutDelegate.kt:539)
    	at androidx.compose.ui.layout.RootMeasurePolicy.measure-3p2s80s(RootMeasurePolicy.kt:38)
    	at androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0(InnerNodeCoordinator.kt:126)
    	at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke(LayoutNodeLayoutDelegate.kt:1499)
    	at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke(LayoutNodeLayoutDelegate.kt:1495)
    	at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:2299)
    	at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:467)
    	at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:230)
    	at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:133)
    	at androidx.compose.ui.node.OwnerSnapshotObserver.observeMeasureSnapshotReads$ui_release(OwnerSnapshotObserver.kt:113)
    	at androidx.compose.ui.node.LayoutNodeLayoutDelegate.performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:1495)
    	at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:35)
    	at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:560)
    	at androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui_release(LayoutNode.kt:1140)
    	at androidx.compose.ui.node.MeasureAndLayoutDelegate.doRemeasure-sdFAvZA(MeasureAndLayoutDelegate.kt:321)
    	at androidx.compose.ui.node.MeasureAndLayoutDelegate.remeasureOnly(MeasureAndLayoutDelegate.kt:503)
    	at androidx.compose.ui.node.MeasureAndLayoutDelegate.recurseRemeasure(MeasureAndLayoutDelegate.kt:371)
    	at androidx.compose.ui.node.MeasureAndLayoutDelegate.measureOnly(MeasureAndLayoutDelegate.kt:362)
    	at androidx.compose.ui.platform.AndroidComposeView.onMeasure(AndroidComposeView.android.kt:966)
    	at android.view.View.measure(View.java:26357)
    	at androidx.compose.ui.platform.AbstractComposeView.internalOnMeasure$ui_release(ComposeView.android.kt:302)
    	at androidx.compose.ui.platform.AbstractComposeView.onMeasure(ComposeView.android.kt:289)
 E  	at android.view.View.measure(View.java:26357)
    	at androidx.recyclerview.widget.RecyclerView$LayoutManager.measureChildWithMargins(RecyclerView.java:10210)
    	at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1688)
    	at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1622)
    	at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:687)
    	at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4645)
    	at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:4348)
    	at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4919)
    	at android.view.View.layout(View.java:23693)
    	at android.view.ViewGroup.layout(ViewGroup.java:6413)
    	at com.google.android.material.appbar.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:149)
    	at com.google.android.material.appbar.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:43)
    	at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:2376)
    	at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:918)
    	at android.view.View.layout(View.java:23693)
    	at android.view.ViewGroup.layout(ViewGroup.java:6413)
    	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
    	at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
    	at android.view.View.layout(View.java:23693)
    	at android.view.ViewGroup.layout(ViewGroup.java:6413)
    	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
    	at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
    	at android.view.View.layout(View.java:23693)
    	at android.view.ViewGroup.layout(ViewGroup.java:6413)
    	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
    	at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
    	at android.view.View.layout(View.java:23693)
    	at android.view.ViewGroup.layout(ViewGroup.java:6413)
    	at androidx.drawerlayout.widget.DrawerLayout.onLayout(DrawerLayout.java:1263)
    	at android.view.View.layout(View.java:23693)
    	at android.view.ViewGroup.layout(ViewGroup.java:6413)
    	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
    	at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
    	at android.view.View.layout(View.java:23693)
    	at android.view.ViewGroup.layout(ViewGroup.java:6413)
    	at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1891)
    	at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1729)
    	at android.widget.LinearLayout.onLayout(LinearLayout.java:1638)
    	at android.view.View.layout(View.java:23693)
    	at android.view.ViewGroup.layout(ViewGroup.java:6413)
    	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
    	at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
    	at android.view.View.layout(View.java:23693)
    	at android.view.ViewGroup.layout(ViewGroup.java:6413)
    	at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1891)
    	at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1729)
    	at android.widget.LinearLayout.onLayout(LinearLayout.java:1638)
    	at android.view.View.layout(View.java:23693)
    	at android.view.ViewGroup.layout(ViewGroup.java:6413)
    	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
    	at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
    	at com.android.internal.policy.DecorView.onLayout(DecorView.java:799)
    	at android.view.View.layout(View.java:23693)
    	at android.view.ViewGroup.layout(ViewGroup.java:6413)
    	at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:3999)
    	at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3372)
    	at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2328)
    	at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9087)
    	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1231)
    	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1239)
 E  	at android.view.Choreographer.doCallbacks(Choreographer.java:899)
    	at android.view.Choreographer.doFrame(Choreographer.java:832)
    	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1214)
    	at android.os.Handler.handleCallback(Handler.java:942)
    	at android.os.Handler.dispatchMessage(Handler.java:99)
    	at android.os.Looper.loopOnce(Looper.java:201)
    	at android.os.Looper.loop(Looper.java:288)
    	at android.app.ActivityThread.main(ActivityThread.java:7872)
    	at java.lang.reflect.Method.invoke(Native Method)
    	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
    	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
I can't share the exact code, but this is an equivalent version of what I'm doing
SampleComposeView.kt
z

Zach Klippenstein (he/him) [MOD]

10/06/2023, 2:45 PM
Which version of compose are you using?
x

xoangon

10/06/2023, 3:17 PM
I'm using Compose BOM
2023.09.02
z

Zach Klippenstein (he/him) [MOD]

10/08/2023, 4:05 PM
Please file a bug
x

xoangon

10/10/2023, 12:59 PM
4 Views