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