未解决的参考:文本 – Android Studio + Kotlin(findViewById故障?)
我正在尝试创建一个警告对话框,虽然我有一个很奇怪的问题。 我的.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() } }
你总是检查值是否为空。 这可以使用if(yourvar != null)
来完成,kotlin将在下面的行中自动成为非空类型。 你也可以使用elvis操作符( ?:
:)来达到这个目的。
val dialogView = layoutInflater.inflate(R.layout.add_channel_dialog, null) ?: return
这将确保你返回一个非null的实例来查看或退出功能,如果没有。 然后你可以打电话safhel:
val nameTextField = dialogView.findViewById<EditText>(R.id.addChannelNameTxt)
使用!!
运营商不推荐,从文档 :
!! 运营商是NPE爱好者。
请使用这种语法
val nameTextField = dialogView!!.findViewById(R.id.addChannelNameTxt) as EditText
- 更新searchView,同时删除查询android
- 这个字段泄漏一个上下文对象
- 如何用kotlin 1.1.0 kotlinx-coroutines-core lib的功能替换Anko的doAsync,uiThread?
- 在kotlin中重构我的viewholder类
- kotlin翻新 – 背景粘性并发标记扫描GC释放65326(1448KB)AllocSpace对象,62(1736KB)LOS对象,
- Android Room:查询中的每个绑定变量都必须具有匹配的方法
- 未解决的参考DaggerApplicationComponent
- RxJava2如何分离不同的可观察发射器的实现
- 使用IntelliJ的Gluon / JavaFXPorts的Android应用程序 – Android设置不完整