kotlin - 我的图像背景颜色出现致命的表达错误
问题描述
我正在学习旧的 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
,它就会崩溃,如果我删除该方法,它就会恢复正常工作。
解决方案
我设法通过删除
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()
}
推荐阅读
- python - 人脸识别 - 每天更新参考人脸编码
- html - Ng-select 多选复选框禁用组
- java - AWS SDK Java DynamoDB - 使用表达式属性名称查询 - 未定义表达式中使用的表达式属性值
- npm - 通过 cmake execute_process 获取 npm --version
- xml - XML、XPath 和按属性值在同一级别上分组节点/属性
- java - 如何在 PreviewView 在屏幕上显示它们之前处理图像?我想做物体检测
- python-3.x - 如何解决 EOFError:在 azure devops 管道中读取一行时出现 EOF
- azure-devops - 使用许可的自定义 Azure DevOps 扩展开发
- google-cloud-platform - Recommendations AI 项目中的“INCORRECT_JSON_FORMAT userEvent”错误
- office-js - 如果在之后立即调用 item.saveAsync,Office.context.mailbox.item.addFileAttachmentAsync 不一致