В чем причина неработающих ленивых столбцов/сеток в приложении Jetpack Compose для Android?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 В чем причина неработающих ленивых столбцов/сеток в приложении Jetpack Compose для Android?

Сообщение Anonymous »

Когда я пытаюсь использовать Lazy-элементы со своим списком данных, приложение разрушается. У этого столкновения есть следующий сценарий:
  • вызов NavHost для экрана с помощью Lazy вызывает небольшое зависание и перезапуск приложения.
  • после перезапуска приложение при вызове NavHost для того же экрана вызывает сбой с системным сообщением «приложение продолжает останавливаться»
    в журнале нет фатальных ошибок
Я пробовал разные способы отправки моих данных ленивому. И с помощью Log.d мы увидели, что данные доступны до того, как должна запуститься функция items(){}.
Также я пытался отправить любые случайные простые данные для создания локального Lazy в Composable (например, список от 1 до 10 и текстовые элементы со значениями)
Все работает, когда я использую простой столбец, строки или 1 элемент
Там мой текущий код для этого элемента. Но это также не сработает, если я использую Any Text() вместо элемента Content.

Код: Выделить всё

@Composable
fun ContentGrid (
content: List) {

LazyColumn {
items(content){it ->
ContentElement(item = it)
}
}

}

@Composable
fun ContentElement (item: Item)  {

Card(
modifier = Modifier
.fillMaxWidth(0.4f)
.fillMaxHeight(0.3f)
.clip(RoundedCornerShape(10))
.clickable(enabled = true , onClick = { })
,
colors = CardDefaults.cardColors(
containerColor  = Color(200, 200, 238, 226),
contentColor = Color.Black)

) {
Column (
modifier = Modifier.padding(5.dp),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.SpaceBetween
) {
Image(
painter = rememberAsyncImagePainter(item.url),
contentDescription = null,
contentScale = ContentScale.FillWidth,
modifier = Modifier
.size(100.dp)
)
/* AsyncImage(
model = item.url,
contentDescription = item.title,
modifier = Modifier
.size(200.dp, 200.dp)
.clip(RoundedCornerShape(10)),
contentScale = ContentScale.FillWidth)*/
Column (
Modifier.fillMaxWidth(),
horizontalAlignment = Alignment.Start
) {
Spacer(Modifier.height(10.dp))
Text(item.title, fontSize = 15.sp, fontWeight = FontWeight.Bold)
Spacer(Modifier.height(10.dp))
Text(item.price, fontSize = 20.sp, fontWeight = FontWeight.Bold)
}
}

}

}
Я только что нашел следующий журнал после полного закрытия приложения:
ФАТАЛЬНОЕ ИСКЛЮЧЕНИЕ: основной процесс: com.example.clothesstore, PID: 5596
java.lang.IllegalStateException: вертикально прокручиваемый компонент был измерен с ограничениями максимальной высоты, равными бесконечности, что запрещено. Одной из распространенных причин является вложенность макетов, таких как LazyColumn и Column(Modifier.verticalScroll()). Если вы хотите добавить заголовок перед списком элементов, добавьте заголовок как отдельный элемент() перед основным элементом() внутри области LazyColumn. Это могло произойти по другим причинам: ваш ComposeView был добавлен в LinearLayout с некоторым весом, вы применили Modifier.wrapContentSize(unbounded = true) или написали собственный макет. Попробуйте удалить источник бесконечных ограничений в иерархии над контейнером прокрутки.
в androidx.compose.foundation.CheckScrollableContainerConstraintsKt.checkScrollableContainerConstraints-K40F9xA(CheckScrollableContainerConstraints.kt:35)
в androidx.compose.foundation .lazy.LazyListKt$rememberLazyListMeasurePolicy$1$1.invoke-0kLqBqw(LazyList.kt:187)
at androidx.compose.foundation.lazy.LazyListKt$rememberLazyListMeasurePolicy$1$1.invoke(LazyList.kt:183)
в androidx.compose.foundation.lazy.layout.LazyLayoutKt$LazyLayout$3$2$1.invoke-0kLqBqw(LazyLayout.kt:119)
в androidx.compose.foundation.lazy.layout.LazyLayoutKt$LazyLayout$3$2$1. вызвать(LazyLayout.kt:112)
в androidx.compose.ui.layout.LayoutNodeSubcompositionsState$createMeasurePolicy$1.measure-3p2s80s(SubcomposeLayout.kt:725)
в androidx.compose.ui.node.InnerNodeCoordinator .measure-BRTryo0(InnerNodeCoordinator.kt:135)
в androidx.compose.ui.graphics.SimpleGraphicsLayerModifier.measure-3p2s80s(GraphicsLayerModifier.kt:646)
в androidx.compose.ui.node.LayoutModifierNodeCoordinator .measure-BRTryo0(LayoutModifierNodeCoordinator.kt:188)
в androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke(LayoutNodeLayoutDelegate.kt:316)
в androidx.compose.ui.node. LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke(LayoutNodeLayoutDelegate.kt:315)
в androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:503)
в androidx.compose.runtime.snapshots .SnapShotStateObserver $ asmedScopemap.observe (snapshotstateobserver.kt: 502)
at at androidx.compose.runtime.snapshots.snapshotstateobserver.observereads (snapshotstateobserver.kt: 258)
androide. .observeReads$ui_release(OwnerSnapshotObserver.kt:133)
в androidx.compose.ui.node.OwnerSnapshotObserver.observeMeasureSnapshotReads$ui_release(OwnerSnapshotObserver.kt:113)
в androidx.compose.ui.node.LayoutNodeLayout Делегат .performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:1775)
в androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:40)
в androidx.compose.ui.node .LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:696)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.measure-BRTryo0(LayoutNodeLayoutDelegate.kt:672)
at androidx.compose .animation.AnimatedEnterExitMeasurePolicy.measure-3p2s80s(AnimatedVisibility.kt:812)
в androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0(InnerNodeCoordinator.kt:135)
в androidx.compose.animation .EnterExitTransitionModifierNode.measure-3p2s80s(EnterExitTransition.kt:1173)
в androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:188)
в androidx.compose.ui.graphics .BlockGraphicsLayerModifier.measure-3p2s80s(GraphicsLayerModifier.kt:578)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:188)
at androidx.compose.animation.AnimatedContentKt $AnimatedContent$6$1$1$1.invoke-3p2s80s(AnimatedContent.kt:781)
at androidx.compose.animation.AnimatedContentKt$AnimatedContent$6$1$1$1.invoke(AnimatedContent.kt:780)
at androidx .compose.ui.layout.LayoutModifierImpl.measure-3p2s80s(LayoutModifier.kt:294)
2024-09-26 10:56:27.214 5596-5596 AndroidRuntime com.example.clothesstore E на androidx.compose.ui. node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:188)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke(LayoutNodeLayoutDelegate.kt:316)
at androidx.compose.ui .node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke(LayoutNodeLayoutDelegate.kt:315)
в androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:503)
в androidx.compose. runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:502)
в androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:258)
в androidx.compose.ui. node.ownersnapshotobserver.observereads $ ui_release (holidentnapshotobserver.kt: 133)
at androidx.compe.ui.node.ownersnapshotobserver.observemeasResnapShotReads $ ui_Releas node.LayoutNodeLayoutDelegate.performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:1775)
в androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:40)
в androidx.compose. ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:696)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.measure-BRTryo0(LayoutNodeLayoutDelegate.kt:672)в androidx.compose.animation.AnimatedContentMeasurePolicy.measure-3p2s80s(AnimatedContent.kt:837)
в androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0(InnerNodeCoordinator.kt:135)
в androidx. compose.ui.node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke(LayoutNodeLayoutDelegate.kt:316)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke(LayoutNodeLayoutDelegate.kt:315)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:2441)
at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:502)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:258)
в androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:133)
в androidx. compose.ui.node.OwnerSnapshotObserver.observeMeasureSnapshotReads$ui_release(OwnerSnapshotObserver.kt:113)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate.performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:1775)
at android х. compose.ui.node.LayoutNodeLayoutDelegate.access$performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:40)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:696)
at androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui_release(LayoutNode.kt:1221)
at androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui_release$default(LayoutNode.kt) :1212)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.doRemeasure-sdFAvZA(MeasureAndLayoutDelegate.kt:369)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.remeasureAndRelayoutIfNeeded(MeasureAndLayoutDelegate.kt:5 66 )
at androidx.compose.ui.node.MeasureAndLayoutDelegate.remeasureAndRelayoutIfNeeded$default(MeasureAndLayoutDelegate.kt:534)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.measureAndLayout(MeasureAndLayoutDelegate.kt:390)at androidx.compose.ui.platform.AndroidComposeView.measureAndLayout(AndroidComposeView.android.kt:1273)
at androidx.compose.ui.node.Owner.measureAndLayout$default(Owner.kt:248)в androidx.compose.ui.platform.AndroidComposeView.dispatchDraw(AndroidComposeView.android.kt:1555)
в android.view.View.draw(View.java:24845)
в android. view.View.updateDisplayListIfDirty(View.java:23692)
в android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4521)
в android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4494)
в android.view.View.updateDisplayListIfDirty(View.java:23646)
в android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4521)
26 сентября 2024 10:56 :27.216 5596-5596 AndroidRuntime com.example.clothesstore E в android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4494)
в android.view.View.updateDisplayListIfDirty(View.java:23646)
в android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4521)
в android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4494)
в android.view.View.updateDisplayListIfDirty(View.java) :23646)
в android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4521)
в android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4494)
в android.view. View.updateDisplayListIfDirty(View.java:23646)
в android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:694)
в android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:700)
в android.view.ThreadedRenderer.draw(ThreadedRenderer.java:798)
в android.view.ViewRootImpl.draw(ViewRootImpl.java:5659)
в android.view.ViewRootImpl.performDraw(ViewRootImpl .java:5312)
в android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:4303)
в android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2917)
в android. view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:10324)
в android.view.Choreographer$CallbackRecord.run(Choreographer.java:1406)
в android.view.Choreographer$CallbackRecord.run( Choreographer.java:1415)
в android.view.Choreographer.doCallbacks(Choreographer.java:1015)
в android.view.Choreographer.doFrame(Choreographer.java:945)
в android .view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1389)
в android.os.Handler.handleCallback(Handler.java:959)
в android.os.Handler.dispatchMessage(Handler.java) :100)
в android.os.Looper.loopOnce(Looper.java:232)
в android.os.Looper.loop(Looper.java:317)
в android.app. ActivityThread.main(ActivityThread.java:8705)
в java.lang.reflect.Method.invoke(собственный метод)
в com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java :580)
на com.android.internal.os.ZygoteInit.main(ZygoteInit.java:886)

Подробнее здесь: https://stackoverflow.com/questions/790 ... ompose-and
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»