私はAndroidプロジェクトをKotlinに切り替えようとしています。私はEditText
(TextView
のサブクラス)を持っており、ヒントとテキストをプログラムで設定したいと思っています。ヒントは期待どおりに機能します。私はKotlinセッターの構文を使用してそれを実行しようとした場合、テキストの場合は、しかし、私は、型の不一致の例外を取得しています:KotlinプロパティがJavaクラス(EditText setText)の構文にどのようにアクセスするのですか?
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
私たちは宣言を見れば、我々はTextView
から継承し、同一の署名を見つけることができます:
public final void setHint(CharSequence hint)
public final void setText(CharSequence text)
x.y = z
はx.setY(z)
のショートカットですが、明らかにその印象は間違っていたようです。 setText()
は、セッターではなく通常のメソッドとして扱われますが、コンパイラの動作が異なるようにするこれら2つのメソッドの違いは何ですか?私が考えることができるのは、TextView
にmHint
というプロパティがありますが、私はそれが当てはまるとは思わないのです。
もう一つ分かりませんが、android.text.Editable
はどこから来たのですか?対応するsetText(Editable)
メソッドが存在せず、このタイプのパブリックフィールドもありません。
ありがとうございました。
いい説明、 – azizbekian