Kotlin自定义对话框指定为非null的参数
我得到这个错误:
引起:java.lang.IllegalArgumentException:指定为非null的参数为null:方法kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull,参数savedInstanceState
当我试图在Kotlin中膨胀自定义对话框时,我得到了我在对话框中的super.onCreate行上面写的错误。
对话框代码是:
class Custom_Dialog_Exit_App(var activity: Activity)// TODO Auto-generated constructor stub : Dialog(activity, R.style.full_screen_dialog) { override fun onCreate(savedInstanceState: Bundle) { super.onCreate(savedInstanceState) requestWindowFeature(Window.FEATURE_NO_TITLE) setContentView(R.layout.custom_dialog_exit_app) activity.window!!.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT) initView() } fun initView() { initClicks() } fun initClicks() { } }
和init是:
val omer = Custom_Dialog_Exit_App(this@MainActivity) omer.show()
请帮忙
override fun onCreate(savedInstanceState: Bundle) {
既然savedInstanceState
可以为null
那么types必须是Bundle?
。
当你指定参数不为null时,kotlin会在所有情况下生成一个检查。 这包括在实现一个Java接口的时候,所以你需要小心使可为空的参数非空。
我也遇到了错误,我把这个types的Bundle
改成了"Bundle?"
然后它为我工作。 在Kotlin中,你必须指定variables/参数是否为空。
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) init() }
改变这一行
activity.window!!.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT)
至
if(activity.window != null) { activity.window!!.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT) } else { Log.e(TAG, "Window is null"); }