我正在使用此代碼決議 json 檔案并更改我構建的 de 應用程式中的一些專案:
fun fetchJson() {
if (isNetworkAvailable()) {
val request = Request.Builder().url(stationAPPJsonURL).build()
client.newCall(request).enqueue(object : Callback {
override fun onResponse(call: Call, response: Response) {
val body = response.body?.string()
val gson = GsonBuilder().create()
try {
val stationAPP = gson.fromJson(body, StationAPP::class.java)
//ACTIE
actie_zichtbaar = stationAPP.actie_zichtbaar
actie_img = stationAPP.actie_img
actie_url = stationAPP.actie_url
... I left out some code
catch (error: JsonParseException) {
runOnUiThread {
val toast = Toast.makeText(applicationContext, "Problem loading JSON.\nFunctionality may be limited for a while.", Toast.LENGTH_SHORT)
val view = toast.view!!.findViewById<TextView>(android.R.id.message)
toast?.let { view.gravity = Gravity.CENTER }
toast.setGravity(Gravity.CENTER, 0, 0)
toast.show()
}
}
}
override fun onFailure(call: Call, e: IOException) {
runOnUiThread {
val toast = Toast.makeText(applicationContext, "Problem loading JSON.\nFunctionality may be limited for a while.", Toast.LENGTH_SHORT)
val view = toast.view!!.findViewById<TextView>(android.R.id.message)
view?.let { view.gravity = Gravity.CENTER }
toast.setGravity(Gravity.CENTER, 0, 0)
toast.show() --> line 1390!!
}
}
}
}
我在 Google Play Console 的日志中看到,有時這部分代碼會崩潰(4%)。我不知道為什么?我在幾臺設備上測驗過,完全沒有錯誤。
誰能幫幫我?
是否有可能: val stationAPP = gson.fromJson(body, StationAPP::class.java) 不會引發例外,但不知何故加載了 json 檔案時出現了一些錯誤?因此有些專案是空的?
謝謝你的幫助;)
更新:這是它產生的錯誤:
Exception java.lang.NullPointerException:
at com.familiekoning.grolloo.MainActivity$fetchJson$1.onFailure$lambda-10 (MainActivity.kt:1390)
at com.familiekoning.grolloo.MainActivity$fetchJson$1.$r8$lambda$lczurdfMtnZdFDn9iwHvPqw9_Pg
at com.familiekoning.grolloo.MainActivity$fetchJson$1$$ExternalSyntheticLambda8.run
at android.os.Handler.handleCallback (Handler.java:938)
at android.os.Handler.dispatchMessage (Handler.java:99)
at android.os.Looper.loop (Looper.java:250)
at android.app.ActivityThread.main (ActivityThread.java:7806)
at java.lang.reflect.Method.invoke
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:958)
uj5u.com熱心網友回復:
這將是一個猜測,但如果你看到!!任何地方并且你有NullPointerException。你非常接近確定它是罪魁禍首。如果您想要不同的 Toast 外觀,有 NPE 安全方法。
依賴android.id.x不安全的東西,因為它可能非常依賴 OEM。
uj5u.com熱心網友回復:
我變了:
val toast = Toast.makeText(applicationContext, "Problem loading JSON.\nFunctionality may be limited for a while.", Toast.LENGTH_SHORT)
val view = toast.view!!.findViewById<TextView>(android.R.id.message)
view?.let { view.gravity = Gravity.CENTER }
toast.setGravity(Gravity.CENTER, 0, 0)
toast.show()
至:
val toast = Toast.makeText(applicationContext, "Problem loading JSON.\nFunctionality may be limited for a while.", Toast.LENGTH_SHORT)
toast.setGravity(Gravity.CENTER, 0, 0)
toast.show()
這解決了問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/526772.html
標籤:安卓json科特林格森
