Фатальная ошибка выражения с цветом фона моего изображения - PullRequest
0 голосов
/ 21 ноября 2019

Я следую старому курсу Kotlin, и, поскольку их курс довольно старый, я не думаю, что они больше отвечают на вопросы и ответы.

Моя проблема в том, что приложение работает совершенно нормально, нокак только я реализую один метод цвета фона, он останавливается.

Вот ошибка роковая , которую я получаю:

2019-11-21 11:46:14.035 31147-31147/com.example.smack E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.smack, PID: 31147
    java.util.InputMismatchException
        at java.util.Scanner.throwFor(Scanner.java:876)
        at java.util.Scanner.next(Scanner.java:1502)
        at java.util.Scanner.nextDouble(Scanner.java:2431)
        at com.example.smack.Services.UserDataService.returnAvatarColor(UserDataService.kt:35)
        at com.example.smack.Controller.MainActivity$userDataChangeReciever$1.onReceive(MainActivity.kt:72)
        at androidx.localbroadcastmanager.content.LocalBroadcastManager.executePendingBroadcasts(LocalBroadcastManager.java:313)
        at androidx.localbroadcastmanager.content.LocalBroadcastManager$1.handleMessage(LocalBroadcastManager.java:121)
        at android.os.Handler.dispatchMessage(Handler.java:102)
 at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6119)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

Основное внимание уделяется UserDataService.kt:35) где я конвертирую цвета из двойных в Int:

fun returnAvatarColor(components: String) : Int {
    val strippedColor = components.replace("[", "").replace("]", "").replace(",", "")

    var r = 0
    var g = 0
    var b = 0

    val scanner = Scanner(strippedColor)
    if (scanner.hasNext()) {
        r = (scanner.nextDouble() * 255).toInt()
        g = (scanner.nextDouble() * 255).toInt()
        b = (scanner.nextDouble() * 255).toInt()
    }
    return Color.rgb(r,g,b)
}

И после этого (MainActivity.kt:72), где я выбираю метод для его отображения:

userImageNavHeader.setBackgroundColor(UserDataService.returnAvatarColor(UserDataService.avatarColor))

Всякий раз, когда я запускаю приложение, оно работает, но как только я пытаюсь создать аватар и получить его background color, происходит сбой, и если я удаляю метод, он возвращается к идеальной работе.

1 Ответ

0 голосов
/ 21 ноября 2019

Мне удалось это исправить, удалив метод

    val scanner = Scanner(strippedColor)

и отобразив его так:

if (Scanner(strippedColor).hasNext()) {
    r = (Scanner(strippedColor).nextDouble() * 255).toInt()
    g = (Scanner(strippedColor).nextDouble() * 255).toInt()
    b = (Scanner(strippedColor).nextDouble() * 255).toInt()
}
...