使用Fuel Framework不显示Android Toast消息

时间:2018-08-25 14:50:25

标签: android kotlin httpresponse android-toast

我正在使用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()}

这也不起作用。

但是我在调​​试时还是去找代码: dubug_screenshot

感谢您的帮助!干杯。

更新: 在调试时,我注意到即使API中的“ minimal_length” 的值仍然为8,minPasswordLength仍为0,那么这可能是线程问题吗?

1 个答案:

答案 0 :(得分:2)

for wall in walls: # Check if the player rectangle collides with a wall rectangle if player.colliderect(wall): print("Game over") return restart implementation 'com.github.kittinunf.fuel:fuel-android:1.15.0文件)中使用implementation 'com.github.kittinunf.fuel:fuel:1.15.0'代替dependencies

该库的JVM实现不会自动调用UI线程中的处理程序。


即使在JVM实现中,这也对我有用: build.gradle

我认为它对您不起作用,因为JSON不包含runOnUiThread { Toast.makeText(this, "Some text", Toast.LENGTH_SHORT).show() }而是"Error"字段。