【问题标题】:Kotlin - Operator '==' cannot be applied to 'Editable!' and 'String' when comparing stringKotlin - 运算符“==”不能应用于“可编辑!”和 'String' 比较字符串时
【发布时间】:2017-07-19 10:12:45
【问题描述】:

所以,刚开始在 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建议用

替换

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

我的疑惑:

  • 这实际上是什么意思?
  • 如何应用 IDE 建议的内容或有任何解决方法来完成此操作?

【问题讨论】:

  • 我不知道Kotlin,但是在Java中,你必须将Editable转换为String,例如message.toString()
  • @VassilisPallas 哦,是的.. 现在很清楚了.. edtTxt.text 只是 java 的 editTxt.getText() 的替代品,所以基本上必须在使用 == 之前将其转换为字符串。是的,错误信息现在很有意义.. :) 谢谢你的澄清。您能否将其添加为答案??

标签: android android-studio kotlin


【解决方案1】:

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

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

val message=edtTxt.text.toString()

【讨论】:

    【解决方案2】:
    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")
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-12
      • 2018-05-18
      • 1970-01-01
      • 1970-01-01
      • 2012-11-29
      • 1970-01-01
      • 1970-01-01
      • 2012-10-05
      相关资源
      最近更新 更多