当我在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相关问答推荐

将Any强制转换为Integer将从API返回NullPointerException

Android设备.Net Maui上的mp3文件列表

Android应用程序中的背景问题

从单元测试访问RES/RAW文件

在模块中找到重复的类com.google.Firebase.auth.ktx.AuthKt||Android Studio

StateFlow和LazyColumn重组

在Jetpack Compose中将导航绘图显示在顶部栏下方、底部栏上方

更改选定的切换轨道 colored颜色

如何共享没有';t是否存在?(仅信息)在Android?

如何迭代 SqlDelight Select 结果而不将所有内容加载到内存中?

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

Material 3的MaterialSwitch默认大小太大了?如何使它变小?

Android Studio 在 list 文件中已经声明了活动类,但仍出现无法找到明确的活动类的错误

当我想使用例如 material3 时,为什么我需要添加对 material 的依赖?底部导航?

视觉转换后获取文本

Android:ActivityCompat.requestPermissions 不显示弹窗(Android 13,targetSdkVersion=33)

如何在 Jetpack Compose 中添加多个标签

Kotlin 调用带参数的函数 Any is xxx ||任何 yyy 都不起作用

如何使用 recyclerview 实现这样的布局?

Android - 水平(从右到左)圆形背景 colored颜色 过渡