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

ome*_*mir 13 android kotlin kotlin-android-extensions

我收到了这个错误:

引起: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() {


    }


}
Run Code Online (Sandbox Code Playgroud)

并且init是:

val omer = Custom_Dialog_Exit_App(this@MainActivity)
        omer.show()
Run Code Online (Sandbox Code Playgroud)

请帮忙

Kis*_*kae 28

override fun onCreate(savedInstanceState: Bundle) {

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

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


小智 7

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

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    init()
}
Run Code Online (Sandbox Code Playgroud)