App Crashing when swipping the HorizontalPagerIndicator in Jetpack Compose

27 Views Asked by At

I am using HorizontalPagerIndicator as below:

item {
                    Box {
                        HorizontalPager(
                            modifier = Modifier
                                .height(200.dp),
                            count = pages.size,
                            state = pagerState,
                            verticalAlignment = Alignment.Top
                        ) { position ->
                            ImagesScreen(media = pages[position])
                            HorizontalPagerIndicator(
                                pagerState = pagerState,
                                modifier = Modifier
                                    .align(
                                        Alignment.BottomCenter
                                    )
                                    .padding(bottom = 10.dp)
                            )

                        }

                    }
                }

This is inside LazyColumn. I am getting crash log as below when scrolling the HorizontalPager.

Process: om.namostate.jetpackroom, PID: 10655
                                                                                                    java.lang.IllegalStateException: Check failed.
                                                                                                        at androidx.compose.ui.layout.LayoutNodeSubcompositionsState$precompose$1.dispose(SubcomposeLayout.kt:566)
                                                                                                        at androidx.compose.foundation.lazy.layout.LazyLayoutPrefetcher.cancelScheduledPrefetch(LazyLayoutPrefetcher.android.kt:274)
                                                                                                        at androidx.compose.foundation.lazy.layout.LazyLayoutPrefetchPolicy.cancelScheduledPrefetch(LazyLayoutPrefetchPolicy.kt:42)
                                                                                                        at androidx.compose.foundation.lazy.LazyListState.notifyPrefetch(LazyListState.kt:305)
                                                                                                        at androidx.compose.foundation.lazy.LazyListState.onScroll$foundation_release(LazyListState.kt:266)
                                                                                                        at androidx.compose.foundation.lazy.LazyListState$scrollableState$1.invoke(LazyListState.kt:150)
                                                                                                        at androidx.compose.foundation.lazy.LazyListState$scrollableState$1.invoke(LazyListState.kt:150)
                                                                                                        at androidx.compose.foundation.gestures.DefaultScrollableState$scrollScope$1.scrollBy(ScrollableState.kt:134)
                                                                                                        at androidx.compose.foundation.gestures.ScrollingLogic.dispatchScroll-f0eR0lY(Scrollable.kt:314)
                                                                                                        at androidx.compose.foundation.gestures.ScrollDraggableState.dragBy-Uv8p0NA(Scrollable.kt:389)
                                                                                                        at androidx.compose.foundation.gestures.DraggableKt$draggable$9$2$2.invokeSuspend(Draggable.kt:244)
                                                                                                        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
                                                                                                        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
                                                                                                        at androidx.compose.ui.platform.AndroidUiDispatcher.performTrampolineDispatch(AndroidUiDispatcher.android.kt:81)
                                                                                                        at androidx.compose.ui.platform.AndroidUiDispatcher.access$performTrampolineDispatch(AndroidUiDispatcher.android.kt:41)
                                                                                                        at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame(AndroidUiDispatcher.android.kt:68)
                                                                                                        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1648)
                                                                                                        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1659)
                                                                                                        at android.view.Choreographer.doCallbacks(Choreographer.java:1129)
                                                                                                        at android.view.Choreographer.doFrame(Choreographer.java:1045)
                                                                                                        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1622)
                                                                                                        at android.os.Handler.handleCallback(Handler.java:958)
                                                                                                        at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                                                        at android.os.Looper.loopOnce(Looper.java:230)
                                                                                                        at android.os.Looper.loop(Looper.java:319)
                                                                                                        at android.app.ActivityThread.main(ActivityThread.java:8893)
                                                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                                                        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:608)
                                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)

What might be the reason for the crash?

1

There are 1 best solutions below

0
BenjyTec On

HorizontalPager has been moved from Accompanist to the official Jetpack Compose. Please try to migrate it first and see if that already resolves the issue:

  1. Make sure you are using Compose 1.4.0+ before attempting to migrate to androidx.compose.foundation.pager.
  2. Change com.google.accompanist.pager.HorizontalPager to androidx.compose.foundation.pager.HorizontalPager
  3. Change count variable to pageCount.
  4. Change itemSpacing parameter to pageSpacing.
  5. Change any usages of rememberPagerState() to androidx.compose.foundation.pager.rememberPagerState()
  6. Run your changes on device and check to see if there are any differences.