kotlin.NotImplementedError: An operation is not implemented: not implemented AlertDialog

Posted

技术标签:

【中文标题】kotlin.NotImplementedError: An operation is not implemented: not implemented AlertDialog【英文标题】: 【发布时间】:2021-03-13 20:32:03 【问题描述】:

我正在尝试使用 kotlin 的桌面撰写进行一些练习,当我尝试实现 AlertDialog 元素时,我遇到了这个异常:

线程“AWT-EventQueue-0 @coroutine#3”中的异常 kotlin.NotImplementedError: 操作未实现:未实现

我试图运行的代码:

fun main() 
    var text = mutableStateOf(0F)
    var num = mutableStateOf("a")
    Window(
        size = IntSize(500, 500),
        title = num.value,
        menuBar = MenuBar(
            Menu(
                name = "Test",
                MenuItem(
                    name = "Dodaj random",
                    onClick = 
                        text.value = text.value + Random.nextFloat()
                        if (text.value > 1F) 
                            text.value = 0F
                            num.value += "a"
                        
                    ,
                    shortcut = KeyStroke(Key.A)
                ),
                MenuItem(
                    name = "Exit",
                    onClick = 
                        AppManager.exit()
                    ,
                    shortcut = KeyStroke(Key.L)
                )
            )
        )
    ) 

        MaterialTheme 
            Column(Modifier.fillMaxSize(), Arrangement.spacedBy(12.dp)) 
                LinearProgressIndicator(text.value.toFloat(), modifier = Modifier.align(Alignment.CenterHorizontally))
                val openDialog = remember  mutableStateOf(false) 
                Button(
                    onClick = 
                        openDialog.value = true
                    ) 
                    Text("Click me!")
                
                if (openDialog.value) 
                    AlertDialog(
                        onDismissRequest =  openDialog.value = false ,
                        title =  Text("Dialog title") ,
                        text =  Text("Here is a text") ,
                        confirmButton = 
                            Button(
                                onClick = 
                                    openDialog.value = false
                                
                            )  Text("Confirm butt") 
                        ,
                        dismissButton = 
                            Button(
                                onClick = 
                                    openDialog.value = false
                                
                            )  Text("Diss butt") 
                        
                    )
                
                Button(
                    onClick = 
                        text.value += 0.1F
                        if (text.value > 1F) 
                            text.value = 0F
                            num.value += "a"
                        
                    ,
                    modifier = Modifier.align(Alignment.CenterHorizontally)
                ) 
                    Text(text.value.toString())
                

                Button(
                    onClick = 
                        num.value += "a"
                    ,
                    modifier = Modifier.align(Alignment.CenterHorizontally)
                ) 
                    Text(num.component1())
                


            
        
    

只有当我尝试点击“点击我”按钮时,才会出现此异常,其他按钮才能正常工作。

我的进口

import androidx.compose.desktop.AppManager
import androidx.compose.desktop.Window
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material.Button
import androidx.compose.material.LinearProgressIndicator
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.runtime.mutableStateOf
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.key.Key
import androidx.compose.ui.unit.IntSize
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.KeyStroke
import androidx.compose.ui.window.Menu
import androidx.compose.ui.window.MenuBar
import androidx.compose.ui.window.MenuItem
import kotlin.random.Random

【问题讨论】:

刚刚测试过并且工作正常。你用的是什么JDK版本?您能否也添加您的导入? 添加了导入,我使用的是 JDK 11.0.6 嗯,一切看起来都很好。您使用的是哪个版本的 Jetbrains Compose? 0.1.0-m1-build62 我真的不知道发生了什么除了这一切都正常工作。 【参考方案1】:

您的问题似乎与this github 问题有关。

要解决它,只需将 compose 依赖项更新为 0.2.0-build132。

具有正确版本的 build.gradle 的完整示例:

import org.jetbrains.compose.compose

plugins 
    kotlin("jvm") version "1.4.20"
    id("org.jetbrains.compose") version "0.2.0-build132"


repositories 
    jcenter()
    maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")


dependencies 
    implementation(compose.desktop.currentOs)


compose.desktop 
    application 
        mainClass = "MainKt"
    

【讨论】:

当我按照你说的去做时,我得到了这个java.lang.IncompatibleClassChangeError: Found interface org.jetbrains.kotlin.ir.declarations.IrClass, but class was expected 你的 Gradle 文件中有一些奇怪的东西,你能把它贴出来吗? 我已经添加了我的 build.gradle 文件,所以你可以比较是否有任何差异 非常感谢,当我将 jvm 版本从“1.4.0”更改为“1.4.20”时,它开始工作了

以上是关于kotlin.NotImplementedError: An operation is not implemented: not implemented AlertDialog的主要内容,如果未能解决你的问题,请参考以下文章