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

Gur*_*Rao 6 android kotlin android-studio

所以,刚开始在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"/>
Run Code Online (Sandbox Code Playgroud)

和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")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

后来IDE建议将其替换为

IDE 建议

我尝试这样做,if (message=="")但开始显示运算符“==”不能应用于“可编辑!” 和 'String' 比较字符串错误时。这完全令人困惑。

我的疑惑在这里:

  • 这实际上意味着什么?
  • 我如何应用 IDE 建议的内容,或者是否有任何解决方法来完成这项工作?

Vas*_*las 7

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

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

val message=edtTxt.text.toString()
Run Code Online (Sandbox Code Playgroud)