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