我收到了这个错误:
引起: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()
请帮忙
答案 0 :(得分:22)
override fun onCreate(savedInstanceState: Bundle) {
由于savedInstanceState
可以是null
,因此类型必须为Bundle?
。
当您指定参数不为null时,kotlin会在所有情况下生成检查。这包括在实现Java接口时,因此您需要注意使可为空的参数非空。
答案 1 :(得分:6)
我也遇到了错误,我将类型Bundle
更改为"Bundle?"
。然后它适用于我。在Kotlin中,您必须指定变量/参数是否为空。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
init()
}
答案 2 :(得分:-2)
更改此行
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");
}