我正在尝试创建一个警告对话框,虽然我有一个非常奇怪的问题。我的.text给了我错误"未解决的参考"。我三重和四重检查,但不能找到原因。
以下是代码:
fun addChannelClicked(view: View) {
if (AuthService.isLoggedIn) {
val builder = AlertDialog.Builder(this)
val dialogView = layoutInflater.inflate(R.layout.add_channel_dialog, null)
builder.setView(dialogView)
.setPositiveButton("Add") { dialogInterface, i ->
// perform some logic when clicked
val nameTextField = dialogView.findViewById<EditText>(R.id.addChannelNameTxt)
val descTextField = dialogView.findViewById<EditText>(R.id.addChannelDescTxt)
val channelName = nameTextField.text.toString()
val channelDesc = descTextField.text.toString()
// Create channel with the channel name and description
hideKeyboard()
}
.setNegativeButton("Cancel") { dialogInterface, i ->
// Cancel and close the dialog
hideKeyboard()
}
.show()
}
}
答案 0 :(得分:1)
您应始终检查该值是否为空。它可以使用if(yourvar != null)
完成,kotlin将在以下行中自动转换为非null类型。您还可以使用elvis运算符(?:
)来达到此目的。
val dialogView = layoutInflater.inflate(R.layout.add_channel_dialog, null) ?: return
这将确保您从视图返回非null实例,或者如果没有则退出功能。然后你可以打电话给safelly:
val nameTextField = dialogView.findViewById<EditText>(R.id.addChannelNameTxt)
doc:
不推荐使用!!
运算符
!!运营商是NPE爱好者。
答案 1 :(得分:0)
请使用这种语法
val nameTextField = dialogView!!.findViewById(R.id.addChannelNameTxt) as EditText
答案 2 :(得分:-1)
导入kotlinx.android.synthetic.main.your_layout_xml_name。*
请替换&#34; your_layout_xml_name&#34;与你的&#34; layout_name&#34;在导入线上将解决您的问题。