相关疑难解决方法(0)

Kotlin属性访问语法如何用于Java类(即EditText setText)?

我正在尝试将我的Android项目切换到Kotlin.我有一个EditText(我的子类TextView),我想以编程方式设置提示和文本.提示按预期工作.但是对于文本,如果我尝试使用Kotlin setter语法,我会遇到类型不匹配异常:

    val test = EditText(context)

    test.setHint("hint")    // Lint message: "Use property access syntax"
    test.hint = "hint"      // ok

    test.setText("text")    // ok (no lint message)
    test.text = "text"      // Type mismatch: inferred type is kotlin.String but android.text.Editable! was expected
Run Code Online (Sandbox Code Playgroud)

如果我们查看声明,我们会发现从TextView以下内容继承的相同签名:

    public final void setHint(CharSequence hint)

    public final void setText(CharSequence text)
Run Code Online (Sandbox Code Playgroud)

我的印象x.y = z是一种捷径,x.setY(z)但显然这种印象是错误的.setText()被视为普通方法而不是setter,但这两种方法之间的区别是什么使编译器的行为不同?我唯一能想到的是,TextView有一个mHint属性,但我不认为它可能是这样.

我不太明白的另一件事是,android.text.Editable来自哪里?没有相应的setText(Editable)方法,也没有这种类型的公共领域.

谢谢.

android android-edittext kotlin

24
推荐指数
4
解决办法
1万
查看次数

标签 统计

android ×1

android-edittext ×1

kotlin ×1