Android/Kotlin上的字符串为Double

Eri*_*ert 0 android kotlin

我必须使用Kotlin在Android上将字符串转换为double.

以下应该在Kotlin中有效,但不是(没有这样的方法):

var dbl = "1.0".toDouble()
Run Code Online (Sandbox Code Playgroud)

以下Javaish方式也不起作用:

var dbl = Double.parseDouble("1.0")
Run Code Online (Sandbox Code Playgroud)

显然,Android上的String类既没有Kotlin API,Double也没有通常的Java API?

是否有任何优雅的方式适用于AndroidKotlin

现在,我正在使用它(这是有效的,但它很难看):

var dbl = java.lang.Double.parseDouble("1.0")
Run Code Online (Sandbox Code Playgroud)

该项目是使用Android Studio新创建的,使用以下版本:

ext.kotlin_version = '1.1.51'
    minSdkVersion 23
    targetSdkVersion 26
Run Code Online (Sandbox Code Playgroud)

我认为这是Android API和Kotlin API之间的一些不匹配.

spi*_*ce7 7

方法就在那里,它不应该给你no方法异常.

尝试干净的Android版本.Kotlin的问题跟踪器上存在一个错误,即Gradle构建任务没有完全定义所有正确需要干净构建的内容.这已经针对最新版本的Kotlin进行了修复.

我要遵循的几个步骤来尝试解决此问题:

  1. 清理构建
  2. 升级到最新的Kotlin版本.在撰写本文时,它是1.1.60.
  3. 确保您使用的是最新版本的Gradle和Android Studio.我的团队目前正在使用Gradle 4.3.1和Android插件3.0.0
  4. 如果这些不起作用,我会将所有IDE数据从项目中删除.(包括隐藏.gradle.idea文件夹),并将您的项目重新导入Android Studio,然后重试.

方法肯定存在,我可以使用它.

作为一种简单地让你再次移动并取消阻止你的方法,如果上述方法不起作用,你可以自己将以下功能添加到你的应用程序中,它应该也能正常工作:

public inline fun String.toDouble(): Double = java.lang.Double.parseDouble(this)
Run Code Online (Sandbox Code Playgroud)