class MyFragment : BaseFragment {
private lateinit var myPresenter: Contract.MyPresenter
override lateinit var adapter: MyAdapter
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
myPresenter.view = this
adapter = MyAdapter(
myPresenter,
this,
this
)
recyclerView.adapter = adapter
}
我已经在应用程序中的很多地方构造了这种类型的类。我发现用户经常崩溃,他们通常是UninitializedPropertyAccessException
。在您说之前,我应该使变量为可空值,我认为问题更大。
如果您执行简单的测试,则可以正常工作-打开应用程序并进行测试。好吧,如果您打开相同的片段,请按Home键,然后终止应用程序进程,稍后再尝试重新打开应用程序,则会使lateinit
变量出错。我们应该如何绕过此错误?我在应用程序中使用了MVP和MVVM,因此这意味着用其数据保存Presenters
或ViewModels
是至关重要的,因为当进程被杀死时,数据将丢失,而随后当用户尝试删除时,数据将丢失。与应用程序交互-如果变量设置为lateinit-我们会收到错误消息。如果将其设置为可为空,则不会收到错误,但仍然会有意外的应用程序行为。我们不想要那个...
保存所有与UI相关的东西(recyclerviews,适配器实例等)的正确方法(示例很好)是什么?有 ViewModel / Presenter实例?