16

我收到了这个错误:

原因:java.lang.IllegalArgumentException:指定为非空的参数为空:方法 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() {


    }


}

初始化是:

val omer = Custom_Dialog_Exit_App(this@MainActivity)
        omer.show()

请帮忙

4

3 回答 3

34

override fun onCreate(savedInstanceState: Bundle) {

既然savedInstanceState可以是null类型必须是Bundle?

当您指定参数不为 null 时,kotlin 会在所有情况下生成检查。这包括在实现 Java 接口时,因此您需要小心使可空参数为非空。

于 2017-06-17T12:09:46.187 回答
14

我也遇到了错误,我将类型更改Bundle"Bundle?"。然后它对我有用。在 Kotlin 中,您必须指定变量/参数是否为空。

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    init()
}
于 2018-01-12T05:34:25.963 回答
-3

更改此行

  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");
} 
于 2017-06-17T12:13:00.357 回答