Kotlin - 运算符'=='无法应用于'可编辑!'比较字符串时的'String'

时间:2017-07-19 10:12:45

标签: android android-studio kotlin

所以,刚开始使用 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 Suggestion

我尝试使用if (message=="")进行此操作但开始显示运算符'=='无法应用于'可编辑!'比较字符串错误时出现'String'。这完全令人困惑。

我的怀疑在这里:

  • 这究竟意味着什么?
  • 如何应用IDE建议的内容或有任何解决方法来完成此任务?

2 个答案:

答案 0 :(得分:1)

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

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

val message=edtTxt.text.toString()

答案 1 :(得分:1)

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")
}