【发布时间】:2018-08-30 08:23:15
【问题描述】:
我有时会收到UninitializedPropertyAccessException 的错误(来自分析),但在我使用它的过程中,该应用程序从未崩溃过。我认为在应用程序在后台删除并且进程被终止之后会发生这种情况 - 但我无法重现此错误。
在我的活动中,我执行以下操作:
private lateinit var viewModel: MyViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.xxx)
... // doing other stuff
viewModel = ViewModelProviders.of(this).get(MyViewModel::class.java)
viewModel.init(
...,
...,
...,))
setUpObservables()
}
我的MyViewModel 看起来像:
class MyViewModel : ViewModel() {
var lateinit car: String
fun init(
car: String,
...: String?,
...: Boolean
) {
if (isInitialized) {
return
}
this.car = car
...
isInitialized = true
}
稍后我尝试访问 car 对象,如果它未初始化,则会收到错误消息。问题是——这怎么会发生? car 对象在 MyViewModel 时被初始化。任何想法如何重现这个?任何想法如何避免这种情况?
【问题讨论】:
-
除了 "lateinit var car: String" 而不是 "var lateinit..." 这件事我试一试,但对我来说看起来不错
标签: android mvvm kotlin viewmodel