Пытаясь прочитать число из текстового представления в kotlin для Android, все обычные методы вывести приложение из строя - PullRequest
1 голос
/ 22 октября 2019

Я пытаюсь прочитать десятичное число из текстового представления в Kotlin на Android Studio. Вот мой код:

var time1 = findViewById<TextView>(R.id.time1)
var time1String: String = time1.toString()
var time1Float: Float = time1String.toFloat()
//var Time1Double = java.lang.Double.parseDouble(time1String)
//time1Float = time1Float * 1000
//var time1Long: Long = time1Double.toLong()

Комментируя строку 3, код работает правильно. Раскомментирование любой из закомментированных строк приводит к компиляции приложения, загрузке на виртуальную машину Android, а затем сбоям при запуске приложения. Пока они прокомментированы, все работает нормально, но без намеченной функциональности.

ошибка, возникающая при запуске кода, как показано выше:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.myapplication, PID: 1067
java.lang.NumberFormatException: For input string: "android.support.v7.widget.AppCompatEditText{cf45b9b VFED..CL. .F...... 42,263-592,381 #7f070089 app:id/time1}"
    at java.lang.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1306)
    at java.lang.Double.parseDouble(Double.java:547)
    at com.example.myapplication.MainActivity$onCreate$9.onClick(MainActivity.kt:149)
    at android.view.View.performClick(View.java:5610)
    at android.view.View$PerformClick.run(View.java:22265)
    at android.os.Handler.handleCallback(Handler.java:751)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6077)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)

Приложение завершено.

Спасибо всем за помощь!

Ответы [ 2 ]

3 голосов
/ 22 октября 2019

Давайте поговорим об этом коде:

var time1 = findViewById<TextView>(R.id.time1)
var time1String: String = time1.toString()

В первой строке присваивается TextView вашей переменной time1, и это здорово. Во второй строке, однако, не будет доступа к тексту, отображаемому в этом представлении, но вместо этого будет преобразован сам TextView в String. Из журналов видно, что это дает вам это значение:

"android.support.v7.widget.AppCompatEditText{cf45b9b VFED..CL. .F...... 42,263-592,381 #7f070089 app:id/time1}"

Чтобы получить текст «внутри» TextView, напишите это вместо:

var time1String = time1.text.toString()

Как только вы это сделаете, вы сможете разобрать текст как обычно.

0 голосов
/ 22 октября 2019

Не имея возможности запустить код, я думаю, вам нужно проанализировать текст, который вы получаете из переменной time1. time1 - это TextView, вы пытаетесь проанализировать TextView в строку. Вам понадобится time1.text

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...