当我在Jetpack Compose中从LazyColumn的列表中删除一个项目时,我得到了一个IndexOutOf边界异常.下面的代码重现该错误:

val list = remember { mutableStateListOf(1, 2, 3) }

LazyColumn {
    itemsIndexed(list) { index, value ->
        Button(onClick = {
            list.removeAt(index)
        }) { Text(value.toString()) }
    }
}

当我单击该按钮以删除该项目时出现错误.如果我使用list.lear()或向列表中添加项,则不会出现错误.

我试了itemsIndexed(list) { index, value ->个,还有一些其他的变种. 这些解决方案都没有奏效.

有什么建议吗?

其他详细信息:

  • 我用的是id("org.jetbrains.kotlin.android") version "1.9.20"
  • 我用kotlinCompilerExtensionVersion = "1.5.4"
  • 我正在使用Jetpack Compose implementation(platform("androidx.compose:compose-bom:2023.10.01")).
  • 我用的是material 3 implementation("androidx.compose.material3:material3:1.2.0-alpha11")
  • 我的目标是SDK版本34.

谢谢!

推荐答案

最近也有类似的StackOverflow Question,事实证明,这是Jetpack Compose中的一个错误.这个漏洞已经在Google Issue Trackerfixed上报告了.修复程序应该出现在最新版本的Compose Foundation Library中,因此您需要覆盖BOM依赖项定义:

dependencies {
    implementation(platform("androidx.compose:compose-bom:2023.10.01"))
    implementation("androidx.compose.material3:material3:1.2.0-alpha11")
    // use 1.6.0-beta01
    implementation("androidx.compose.foundation:foundation:1.6.0-beta01")
}

Android相关问答推荐

推断的类型是片段,但应为上下文

如何消除脚手架和顶杆(material 3)更改 colored颜色 时的延迟?

如何将两个变量传递给Nav主机,然后将其传递给另一个屏幕?

如何显示具体的商品数量?

使用 async 向网络发出并行请求并在supervisorScope中处理它们

FFmpeg Android 错误

减少Compose中可滚动选项卡之间的间距

可从 Play store 下载链接访问未发布的应用

Android Jetpack Compose 电视焦点恢复

只能从同一个库组内调用成功(引用groupId=androidx.work from groupId=My Composable)

如何用jetpack compose实现垂直李克特量表

如何在 React Native 下载文件之前打开文件管理器并 Select 一个目录

根据 Jetpack Compose 中的生命周期正确处理变量/函数

如何在 Jetpack Compose 中更改 ModalNavigationDrawer 的抽屉容器 colored颜色 ?

在 jetpack compose 中使用 .shadow 和 Button 会导致问题

Jetpack compose 绘制形状

如何在 Android Studio 中使用 Github Copilot?

lambda 函数中的类型不匹配 - Kotlin

OpenGLES,为什么 glReadPixels() 不能从 FBO 的 Renderbuffer 的 colored颜色 缓冲区中读取数据?

适用于 Android 的 Facebook SDK 4 - 如何以编程方式注销