【发布时间】: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