У меня есть BottomNavigationView
с несколькими вкладками. Каждая вкладка содержит фрагмент. При выборе фрагмента, который вызывает Json из Интернета, и быстрого переключения на другую вкладку, приложение вылетает.
E / AndroidRuntime: ФАТАЛЬНОЕ ИСКЛЮЧЕНИЕ: OkHttp Dispatcher
Вот мой код:
fun fetchJson(theRecycler: RecyclerView) {
val request = Request.Builder().url("someUrl").build()
val client = OkHttpClient()
client.newCall(request).enqueue(object : Callback {
override fun onResponse(call: Call?, response: Response?) {
val body = response?.body()?.string()
val gson = GsonBuilder().create()
val myFeed = gson.fromJson(body, WebFragment::class.java)
activity!!.runOnUiThread{
theRecycler.adapter = WebAdapter(myFeed.items)
}
}
override fun onFailure(call: Call?, e: IOException?) {
println("Failed to execute request")
}
})
}
Ошибка, кажется, происходит в этой строке:
activity!!.runOnUiThread{
theRecycler.adapter = WebAdapter(myFeed.items)
}
Я думаю, что мне нужно остановить этот процесс onStop()
, но я не уверен, как мне поступить, чтобы сделать это.
2019-01-24 22: 25: 49,390 22261-22510 / com.app E / AndroidRuntime:
Неустранимое исключение: OkHttp Dispatcher
Процесс: com.app, PID: 22261
kotlin.KotlinNullPointerException
на com.app.UI.Navigation.HomeFeed.NewsFeed $ fetchJson $ 1.onResponse (HomeFeed.kt: 45)
на okhttp3.RealCall $ AsyncCall.execute (RealCall.java:153)
на okhttp3.internal.NamedRunnable.run (NamedRunnable.java:32)
в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167)
в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:641)
at java.lang.Thread.run (Thread.java:764)