android - Android Toast 消息未使用 Fuel 框架显示
问题描述
我正在使用Fuel发送和接收来自 API 的请求。
但是,如果请求不成功,我将无法显示 Toast 消息或 AlertDialogs。
示例代码:
private fun validatePassword(): Boolean {
var minPasswordLength = 0
val password = findViewById<EditText>(R.id.input_password_register).text.toString()
val password_repeat: String = findViewById<EditText>(R.id.input_password_repeat_register).text.toString()
"/auth/password.json".httpGet().responseString { request, response, result ->
//do something with response
request.header(mapOf("Content-Type" to "application/json"))
Log.println(Log.ASSERT, "password_Curl", request.cUrlString())
when (result) {
is Result.Failure -> {
val data = response.data.toString(Charsets.UTF_8)
Log.println(Log.ASSERT, "Response_Password_Fail", data)
val jelement = JsonParser().parse(data)
val jobject = jelement.asJsonObject
Toast.makeText(this, jobject.get("Error").asString, Toast.LENGTH_SHORT).show()
}
is Result.Success -> {
val data = response.data.toString(Charsets.UTF_8)
Log.println(Log.ASSERT, "Response_Passwd_Succes", data)
val jelement = JsonParser().parse(data)
val jobject = jelement.asJsonObject
minPasswordLength = jobject.get("minimal_length").asInt
}
}
}
return password.length >= minPasswordLength && password.equals(password_repeat)
}
我尝试使用以下命令在 UIThread 上运行 makeText 命令:
runOnUiThread{Toast.makeText(this, jobject.get("Error").asString, Toast.LENGTH_SHORT).show()}
这也不起作用。
谢谢您的帮助!干杯。
更新: 在调试时,我注意到 minPasswordLength 保持为 0,即使API 中的“minimal_length”值为 8。所以可能是线程问题?
解决方案
在(文件)中使用implementation 'com.github.kittinunf.fuel:fuel-android:1.15.0
而不是。implementation 'com.github.kittinunf.fuel:fuel:1.15.0'
dependencies
build.gradle
库的 JVM 实现不会自动调用 UI 线程中的处理程序。
即使在 JVM 实现中,这也适用于我:
runOnUiThread { Toast.makeText(this, "Some text", Toast.LENGTH_SHORT).show() }
我认为它对您不起作用,因为 JSON 不包含"Error"
but"details"
字段。
推荐阅读
- html - 微软边缘浏览器中的材料 UI 可见性密码出现问题检查了不同的方法
- grep - 如何从两个列表中删除列表中的目录?
- terraform - 如何将地形变量转换为二头肌兼容的参数/变量
- sql - 最后一行的 SQL 组和条件总和
- ansible - Ansible:比较字典并创建一个带有结果的新字典
- sql - 春季批处理中不支持查询计数会引发异常错误
- android - CropImageActivity - 在 Redmi 6A (Android 8.1.0) 上点击 CROP(应用程序崩溃)并在 Galaxy M30 (Android 10) 上运行
- sql - COUNT 和 COUNT 的 ROLLUP SUM
- python - 找不到 Selenium 的按钮
- angular - Angular - 在客户刷新页面或清理缓存之前,不会在生产中显示更改