Kotlin – 运算符'=='不能应用于'可编辑'! 和'String'比较字符串

所以,刚刚开始在Android Studio 3.0 Canary 7中使用Kotlin ,我正在执行检查字符串是否为空的简单操作。

这是我的简单布局:

<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Click me" android:id="@+id/btnClick"/> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Write something to print" android:id="@+id/edtTxt"/> 

MainActivity.kt我下面的东西

 class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) btnClick.setOnClickListener { val message=edtTxt.text if (message == "") longToast("Come on! Write something") else longToast("You've written $message") } } } 

所以最初我已经在clicklistener中编写了代码

 val message=edtTxt.text if (message.equals("")) //this here longToast("Come on! Write something") else longToast("You've written $message") 

后来IDE建议将其替换

IDE建议

我试着用if (message=="")这样做,但是开始显示运算符'=='不能应用于'可编辑'! 和“字符串”比较字符串错误。 这是完全混淆的。

我的疑惑在这里:

  • 这实际上是什么意思?
  • 我怎么能应用什么IDE建议或有任何解决方法来完成这个?

edtTxt.text只是java的editTxt.getText()的替代品。 所以基本上这必须在使用==运算符之前转换为String

如果要从Editable对象中获取字符串,请使用toString()方法。

 val message=edtTxt.text.toString() 
 btnClick.setOnClickListener { // edtTxt.text type of EditText val message=edtTxt.text.toString() if (message == "") longToast("Come on! Write something") else longToast("You've written $message") }