Kotlin 自定义对话框参数指定为非空

Kotlin custom dialog Parameter specified as non-null

我收到这个错误:

Caused by: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter 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()

请帮忙

override fun onCreate(savedInstanceState: Bundle) {

因为 savedInstanceState 可以是 null 类型必须是 Bundle?.

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

更改此行

  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");
} 

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

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    init()
}