gpt4 book ai didi

安卓 Kotlin : check if view is not null before displaying Snackbar

转载 作者:行者123 更新时间:2023-12-02 13:18:26 25 4
gpt4 key购买 nike

当使用 retrofit 加载数据时,我使用以下代码显示 snackbar .

有时,我会收到 NullPointerException当用户尝试从该 fragment 导航到另一个 fragment 而获取数据的请求尚未终止时:

kotlin.KotlinNullPointerException at com.test.data.ui.cars.SiteCarsFragment$getCars$1.onFailure(SiteCarsFragment.kt:279) at retrofit2.DefaultCallAdapterFactory$ExecutorCallbackCall$1$2.run(DefaultCallAdapterFactory.java:92) at android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:224) at android.app.ActivityThread.main(ActivityThread.java:7520) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)



这是因为 view在这种情况下为空。

如何修改代码以确保在显示 snackbar 之前定义 View ?
// Call getCars() API
val call = App.myService.getCars(site.id!!)
call.enqueue(object : Callback<CarsResponse> {

override fun onResponse(call: Call<CarsResponse>, response: Response<CarsResponse>) {

Log.i(tagLabel, "getCars() - onResponse() Result = ${response.body()}")

if (response.code() == 200) {

if (response.body()?.data?.size == 0){
// do stuff
} else {
val sb = Snackbar.make(view!!, getString(R.string.mytitle), Snackbar.LENGTH_SHORT)
sb.view.setBackgroundColor(ContextCompat.getColor(context!!, R.color.snackbarGreen))
sb.show()
}

}
}

override fun onFailure(call: Call<CarsResponse>, t: Throwable) {
// do stuff
}

})

最佳答案

我会试试这个。我刚刚添加了一个空检查

if(view != null){

// Your code
val sb = Snackbar.make(view!!, getString(R.string.mytitle), Snackbar.LENGTH_SHORT)
sb.view.setBackgroundColor(ContextCompat.getColor(context!!, R.color.snackbarGreen))
sb.show()
}

关于安卓 Kotlin : check if view is not null before displaying Snackbar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61455450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com