android - 分配了 lateinit 属性值,但我在 Kotlin 中遇到 kotlin.UninitializedPropertyAccessException
问题描述
在为片段创建实例时,我在 Kotlin 中为 lateinit 变量赋值,然后我在片段的 oncreateview 方法中使用了该变量。它运行良好,但有时它返回 kotlin.UninitializedPropertyAccessException 并且我的应用程序已关闭。我不知道它何时发生,我检查了多个场景。但它永远不会奏效。
在这里我添加了我的代码,
private lateinit var mViewModel: SearchViewModel
companion object {
fun getInstance(activity: Activity?): SearchFragment {
val fragment = SearchFragment()
fragment.mViewModel = SearchViewModel(activity)
return fragment
}
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
mBinding = DataBindingUtil.inflate(inflater, R.layout.search_fragment, container, false)
mBinding.viewModel = mViewModel
}
解决方案
Fragment.onCreateView
由框架在它使用默认构造函数创建的实例上调用,而不是通过调用getInstance
它不知道的方法来调用。
也许你应该初始化变量onAttach
?
推荐阅读
- javascript - 如何将字符串对应到特定的数字和数字到特定的字符串
- sql - [ORA]ORA-00917: 插入表格时缺少逗号
- vba - 如何获取行号(不是当前页面)
- rust - 将新任务添加到 tokio 事件循环并在失败时重试任务
- c# - 如何在选择多个文件的情况下打开资源管理器
- sql - SQL 查询在 ASP.NET 中需要 25 秒才能加载页面
- javascript - Highcharts 堆积条形图 - 如何获取堆栈值
- php - 如何在 html 中添加一个嵌入 echo php 代码的类
- ios - tns 预览无法识别通过 App_Resources 添加的 tabview tabItems 的 ios 图像
- spring - Spring Batch 作业因 FatalStepExecutionException 失败:JobRepository 失败强制回滚