Android Room与java.lang.NullPointerException与observeAsState

val itemList: List<Message>? by messageViewModel.messageList.observeAsState()

MessageWindow(itemList = itemList!!)

报指针null错误的原因就是observeAsState函数的问题,

obserAsState函数有两个版本,一个版本是赋予初始值,一个版本是没有初始值,即我报错的这个版本。

因为没有初始值,结果它会返回null!

 

 因为我的itemList是在viewmodel中启动后台线程进行查询的,主线程运行地比后台线程快,所以主线程运行到obser这一行的时候,数据还没有准备好,结果返回null,结果就和下面那一行冲突了。

 

解决办法就是使用obser的另一个版本的函数,赋予一个初始值,这样就不会报null错。

val itemList: List<Message>? by messageViewModel.messageList.observeAsState(listOf())

 

posted @ 2021-08-23 23:24  ou尼酱~~~  阅读(138)  评论(0)    收藏  举报