如何在Android Studio中为Kotlin提取字段

在Android Studio中,我想从像Java这样的类范围中的方法中提取字段toolbar val toolbar = findViewById(R.id.my_toolbar) setupToolBar(toolbar) 我把光标放在工具栏上,右键点击find提取字段的function,但没有运气。 (Refactor – > Extract – > No Fields Extract) 感谢任何意见或评论。

我可以使用Java Scripting API作为脚本运行kotlin吗?

我想运行Kotlin代码作为脚本从Java与Java脚本API类似于这样的javascript: import javax.script.*; public class EvalScript { public static void main(String[] args) throws Exception { // create a script engine manager ScriptEngineManager factory = new ScriptEngineManager(); // create a JavaScript engine ScriptEngine engine = factory.getEngineByName(“JavaScript”); // evaluate JavaScript code from String engine.eval(“print(‘Hello, World’)”); } } 或类似的API这样的。

我可以在没有`this`的情况下在自己的class级中应用中缀函数吗?

在Kotlin,我们有中缀 例如,当我们有 fun Int.test(value: Int) {} 我们可以用 1.test(2) 而当我们把中缀 infix fun Int.test(value: Int) {} 我们可以使用as 1 test 2 对于一个class级,下面是可以的 class myclass { fun main() { test(1) } fun test(value: Int) {} } 但用中缀下面是不行的 class myclass { fun main() { test 1 } infix fun test(value: Int) {} } 显然,它必须有 class myclass { fun main() { […]

编写JS和Java的代码

我正在尝试编写一个代码模块,可以用于JavaScript的客户端浏览器和Kotlin的Java桌面应用程序和Android应用程序。 主要的逻辑操纵一个位图/ PNG文件。 有没有一种方法可以编写一个可以使用的接口,并为JS和Kotlin提供不同的接口实现? 例如,用Java(使用BufferedImage)和JS(使用Canvas)为图像编写包装类(从图像加载,设置像素,获取像素)? 我在这里是新的,所以如果有什么不合理或需要更多的澄清,请让我知道!

评估expression式操作期间发生exception:

我正在Android Studio上开发一个使用kotlin的应用程序,它在尝试调试对象时给我提供了下面的错误。 我想只有在使用像4.3上运行的samsung s3这样的旧设备时才会出现这种情况,因为当我尝试重现与在7.0和8.0上运行的其他设备相同的进程时,它不会发生。 以前有谁见过这样的东西? 这是一个错误或配置变化必要,我不知道? 我的kotlin版本:1.1.61 编辑:我创建了一个错误报告https://issuetracker.google.com/issues/69821974

你如何在Kotlin中实现JavaFX ZoomEvent?

我参与了一个名为“Path Visualizer”的应用程序,它与JavaFXcanvas一起工作。 我对JavaFX很新,并且已经遍布互联网寻找解决这个问题的答案。 我的短期目标是允许跟踪板的缩放function。 这是我的代码片段,不包括主要的方法(注意:你可以在我实现缩放方法之前忽略代码,我只是想包括它,因为它可能是有帮助的): override fun start(stage: Stage) { stage.title = “Path Visualizer” // set up the paths and autos selectedAutonomous = Autonomous(“Auto1”) mapAutonomous.put(selectedAutonomous!!.name, selectedAutonomous!!) selectedPath = DefaultPath selectedAutonomous!!.putPath(selectedPath!!.name, selectedPath!!) // setup the layout val buttonsBox = VBox() buttonsBox.spacing = 10.0 addControlsToButtonsBox(buttonsBox) val stackPane = StackPane(canvas) val splitPane = SplitPane(stackPane, buttonsBox) splitPane.setDividerPositions(0.7) stage.scene = […]

丢弃返回值以返回单位?

我只是从kotlin开始,所以,如果这是一个基本的问题,请原谅我,我做了一些Google搜索,但没有任何有用的东西。 问题是如何将值转换为Unit 。 例如,在斯卡拉,如果我写这样的东西: def foo: Int = ??? def bar(x: String): Unit = x match { case “error” => println(“There was an error”) case _ => foo } matchexpression式的返回types是Any ,但被编译器丢弃, Unit被函数返回。 但是在kotlin中做这样的事情: fun bar(x: String): Unit = when(x) { “error” -> println(“There was an error”) else -> foo() } 它抱怨foo部分: inferred type is Int […]

java.lang.IllegalStateException:Dex存档:仅为.CLASS文件设置.DEX扩展名

我在gitlab ci上构建这个项目 ./gradlew assembleDebug –stacktrace 有时会抛出一个错误: FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ‘:app:transformClassesWithDexBuilderForDebug’. > com.android.build.api.transform.TransformException: java.lang.IllegalStateException: Dex archives: setting .DEX extension only for .CLASS files 在我的本地电脑,它工作正常。 kotlin版本是1.2 multidex已启用 这个错误的原因是什么?

成员函数不能用作参数

用下面的代码: fun someFun(x: Any) { } fun foo(bar: (val x: Any) -> Unit) { } fun baz() { foo(::someFun) } class Test { fun someFun(x: Any) { } fun foo(bar: (val x: Any) -> Unit) { } fun baz() { foo(::someFun) } } 在类之外的代码中,一切正常,没有错误。 在Test :: baz中调用foo ,出现以下错误: 错误:(53,13)Kotlin:types不匹配:推断的types是kotlin.reflect.KMemberFunction1,但是(kotlin.Any) – > kotlin.Unit是预期的 为什么我不能使用成员函数作为这样的参数? 该文件并没有说我不能这样做。

在实现它的类中设置接口的setter

刚开始在android中使用kotlin- 我正在尝试在实现它的类中使用接口的setter – interface MyInterface { val prop: Int // abstract var propertyWithImplementation: String get() = “foo” set(text){“$text foo”} fun foo() { print(prop) } } class Child : MyInterface { override val prop: Int = 29 override var propertyWithImplementation=”bhu” } fun main(args: Array) { println(Child().propertyWithImplementation) } 输出:BHU 预期产出= bhu foo 我哪里错了?