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

这是我的简单布局:

<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中建议将其替换为

android - Kotlin-比较字符串时,运算符 &#39;==&#39;无法应用于 &#39;Editable!&#39;和 &#39;String&#39;-LMLPHP

并且我尝试使用if (message=="")做到这一点,但是开始显示运算符'=='不能应用于'Editable!'。比较字符串错误时,请使用'String'和'String'。这是完全令人困惑的。

我对此表示怀疑:
  • 这实际上是什么意思?
  • 如何应用IDE的建议,或者有任何解决方法来完成此工作?
  • 最佳答案

    edtTxt.text只是Java的editTxt.getText()的替代品。因此,基本上,必须在使用String运算符之前将其转换为==

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

    val message=edtTxt.text.toString()
    

    10-06 13:14
    查看更多