问题:
kotlin.UninitializedPropertyAccessException: lateinit property mCustomListDialog has not been initialized
at com.example.mykotlin1.AddUpdateDishActivity.selectedListItem(AddUpdateDishActivity.kt:249)
at com.example.mykotlin1.adapters.CustomListItemAdapter.onBindViewHolder$lambda-0(CustomListItemAdapter.kt:30)
at com.example.mykotlin1.adapters.CustomListItemAdapter.$r8$lambda$jZJdJvCwr8ZMD2lZuYRXxbKE26s(Unknown Source:0)
at com.example.mykotlin1.adapters.CustomListItemAdapter$$ExternalSyntheticLambda0.onClick(Unknown Source:4)
at android.view.View.performClick(View.java:7448)
at android.view.View.performClickInternal(View.java:7425)
at android.view.View.access$3600(View.java:810)
at android.view.View$PerformClick.run(View.java:28305)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
原因:
1、未初始化
2、关闭该对象,或对象为null后再次调用
3、在赋值时前面添加var修饰符
解决办法:
定义该成员变量
private lateinit var mCustomListDialog: Dialog
1、初始化:
mCustomListDialog = Dialog(this)
注:如果初始化时使用了var定义变量,则会报错,如如下的代码会报错
var mCustomListDialog = Dialog(this)
2、检查代码看是否重复调用,即当该对象已经不存在,已为null,但是还是调用
如第一次调用该代码不会报错
mCustomListDialog.dismiss()
调用该对象一次,如果再次调用如下代码,则会报错
mCustomListDialog.dismiss()