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

Posted

技术标签:

【中文标题】Kotlin 自定义对话框参数指定为非空【英文标题】:Kotlin custom dialog Parameter specified as non-null 【发布时间】:2017-11-20 02:40:03 【问题描述】:

我收到了这个错误:

引起:java.lang.IllegalArgumentException:参数指定为 非空为空:方法 kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull,参数 保存实例状态

当我试图在 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()

请帮忙

【问题讨论】:

【参考方案1】:

override fun onCreate(savedInstanceState: Bundle)

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

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

【讨论】:

太喜欢你了!!你拯救了我的一天。 谢谢! android Studio 中内置的 Java 到 Kotlin 转换器将其转换为不可为空的 Bundle,这很有效。【参考方案2】:

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

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

【讨论】:

【参考方案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");
 

【讨论】:

它还在崩溃:/

以上是关于Kotlin 自定义对话框参数指定为非空的主要内容,如果未能解决你的问题,请参考以下文章

java.lang.IllegalArgumentException:对于Kotlin和WebView,指定为非null的参数为null

指定为非空的参数为空:无法更新 Spring Boot jpa 中的单个实体字段。导致指定为非空的参数为空

IllegalArgumentException:指定为非空的参数为空

错误:java.lang.IllegalArgumentException:指定为非 null 的参数是 null firebase transaction kotlin

Kotlin自定义注释,参数

TypeError:错误#2007:参数文本必须为非空