Kotlin: Как получить и установить текст в TextView на Android с помощью Kotlin?

Я новичок.

Я хочу изменить текст TextView Пока нажимаю на него.

Мой код:

val text: TextView = findViewById(R.id.android_text) as TextView
    text.setOnClickListener {
        text.setText(getString(R.string.name))
    }

Вывод: Я получил результат, но показываю синтаксис доступа к силе .

Может ли кто-нибудь сказать мне, как это сделать?

Спасибо заранее.

Ответ 1

В kotlin не использовать геттеры и сеттеры, как в java. Правильный формат kotlin приведен ниже.

val textView: TextView = findViewById(R.id.android_text) as TextView
textView.setOnClickListener {
    textView.text = getString(R.string.name)
}

Чтобы получить значения из Textview, мы должны использовать этот метод

 val str: String = textView.text.toString()

 println("the value is $str")

Ответ 2

просто добавьте строку ниже и получите доступ к прямому объекту xml

import kotlinx.android.synthetic.main.activity_main.*

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        txt_HelloWorld.text = "abc"
    }

заменить activity_main в соответствии с вашим XML-именем

Ответ 3

Найдите текстовый вид из макета.

val textView : TextView = findViewById(R.id.android_text) as TextView

Настройка onClickListener в текстовом представлении.

textview.setOnClickListener(object: View.OnClickListener {
    override fun onClick(view: View): Unit {
        // Code here.
        textView.text = getString(R.string.name)
    }
})

Контексты аргументов могут быть опущены из View.setOnClickListener, если мы передаем один аргумент литерала функции. Таким образом, упрощенный код будет:

textview.setOnClickListener {
    // Code here.
    textView.text = getString(R.string.name)
}

Ответ 4

Использование:

val textView: TextView = findViewById(R.id.android_text) as TextView
textView.setOnClickListener {
    textView.text = getString(R.string.name)
}

Или:

вы можете аннотировать каждый сайт вызова с помощью @Suppress("UsePropertyAccessSyntax"), но это уродливо.

Ответ 5

  <TextView
        android:id="@+id/usage"
        android:layout_marginTop="220dip"
        android:layout_marginLeft="45dip"
        android:layout_marginRight="15dip"
        android:typeface="serif"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Google "
        android:textColor="#030900"/>


usage.text="hello world"

Ответ 6

import kotlinx.android.synthetic.main.MainActivity.*

class Mainactivity : AppCompatActivity() {


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.MainActivity)

        txt.setText("hello Kotlin")

    }

}

Ответ 7

findViewById (R.id.android_text) не нуждается в приведении типов.

Ответ 8

Да, уже поздно - но может помочь кому-то по ссылке

XML с EditText, кнопкой и TextView

onClick на кнопке изменит значение с EditText на TextView

        <EditText
            android:id="@+id/et_id"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <Button
            android:id="@+id/btn_submit_id"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <TextView
            android:id="@+id/txt_id"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

Посмотрите, как код выполняет действие в вашем классе

Не нужно инициализировать id компонентов, как в Java. Вы можете сделать это по их XML-идентификатору

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_sample)

        btn_submit_id.setOnClickListener {
            txt_id.setText(et_id.text);
        }
    }

Ответ 9

В конце поста добавлено "как TextView". Вы можете получить другие ошибки компилятора, если оставить это включенным. Следующее должно быть хорошо.

val text: TextView = findViewById(R.id.android_text) as TextView

Где 'android_text' - это идентификатор вашего textView