2017-11-15 3 views
0

Ich muss eine Zeichenfolge auf Android konvertieren, mit Kotlin.String zu Double auf Android/Kotlin

Im folgenden soll in Kotlin arbeiten, aber nicht (keine solche Methode):

var dbl = "1.0".toDouble() 

Die folgende Javaish Weise funktioniert auch nicht:

var dbl = Double.parseDouble("1.0") 

der String-Klasse Anscheinend auf Android hat weder die Kotlin-APIs, noch hat Double die üblichen Java-APIs?

Gibt es eine elegante Art und Weise, die auf Android mit Kotlin funktioniert?

Gerade jetzt, ich bin mit diesem (und diese funktioniert, aber es ist hässlich):

var dbl = java.lang.Double.parseDouble("1.0") 

Das Projekt frisch mit Android Studio erstellt wurde, die folgenden Versionen verwenden:

ext.kotlin_version = '1.1.51' 
    minSdkVersion 23 
    targetSdkVersion 26 

als ich nehme an, dies ist eine Diskrepanz zwischen Android API und Kotlin API.

+0

was meinst du mit * Folgendes soll in Kotlin funktionieren, aber nicht (keine solche Methode): * – Blackbelt

+0

Das durch die Kotlin Dokumentation (und Suchergebnisse), 'String # toDouble' ist [soll existieren] (https: // kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/to-double.html). Aber es existiert nicht nach dem Compiler. –

+0

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/to-double.html Sind Sie sicher, dass Sie keinen Import von kotlin.text Paket verpassen? –

Antwort

3

Die Methode ist da, und es sollte nicht geben Sie die Ausnahme keine Methode.

Versuchen Sie eine saubere Android-Build. Es gibt a bug on Kotlin's issue tracker, dass die Gradle-Erstellungsaufgabe nicht vollständig alles richtig definierte, was gelegentlich saubere Builds erforderte. Dies wurde für die neueste Version von Kotlin behoben.

Ein paar Schritte, die ich folgen würde, um zu versuchen, dies zu beheben:

  1. reinigen build
  2. Upgrade auf die neueste Version Kotlin. Zur Zeit dieses Schreibens ist es 1.1.60.
  3. Stellen Sie sicher, dass Sie eine aktuelle Version von Gradle und Android Studio verwenden. Mein Team verwendet derzeit Gradle 4.3.1 und Android Plugin 3.0.0
  4. Wenn diese nicht funktionieren, würde ich ALLE IDE-Daten aus dem Projekt entfernen. (einschließlich der versteckten Ordner .gradle und .idea), und importieren Sie Ihr Projekt erneut in Android Studio und versuchen Sie es erneut.

Die Methode ist definitiv da, und ich kann es verwenden.

Als ein Mittel, um einfach erhalten Sie wieder in Bewegung und entsperren Sie, wenn die oben nicht funktioniert, können Sie die folgende Funktion, um Ihre Anwendung selbst immer hinzufügen, und es sollte auch funktionieren:

public inline fun String.toDouble(): Double = java.lang.Double.parseDouble(this) 
+0

Alles wurde gestern nur frisch installiert. Also der 20. Oktober 2017 Build von Android Studio. Reinigung hat nicht geholfen. Bouncing der Kotlin-Version (von Android Studio Standard 1.1.51) zu 1.1.60 und Resyncing, half. Vielleicht war es die Resynchronisation. –

Verwandte Themen