Kotlin set edittext value

Установка текста в EditText Kotlin

Я пытаюсь установить текст в EditText, но он говорит:

Type mismatch. Required: Editable Found: String 

Мой код выглядит следующим образом:

String name = "Paramjeet" val nametxt = findViewById (R.id.nametxt) as EditText nametxt.text = name 

Не говорите использовать setText , потому что я использую kotlin, а не Java.

Используйте setText(String) , так как editText.text ожидает Editable , а не String .

Используйте setText(String) поскольку EditText.text требует editable в первом месте, а не String

Хорошее объяснение Майкла дано по этой ссылке. Посетите эту ссылку для получения более подробной информации

При генерации синтетического свойства пары Java getter/setter Kotlin сначала ищет геттер. Геттера достаточно, чтобы создать синтетическое свойство с типом геттера. С другой стороны, свойство не будет создано, если будет представлен только сеттер.

Когда сеттер входит в игру, создание собственности становится более сложным. Причина в том, что геттер и сеттер могут иметь различный тип. Более того, геттер и/или сеттер могут быть переопределены в подклассе.

Если вы хотите использовать getter .text из принципа, используйте:

nametxt.text = Editable.Factory.getInstance().newEditable(name) 

Здесь есть несколько рабочих ответов, но если вы все еще хотите использовать формат собственности и ваш код выглядит чистым, вы можете написать расширение:

fun String.toEditable(): Editable = Editable.Factory.getInstance().newEditable(this) 

Затем вы можете использовать его как таковой:

mEditText.text = myString.toEditable() 

Или вы можете использовать свойство расширения:

var EditText.value get() = this.text.toString() set(value)

и используйте .value= вместо .text=

Читайте также:  Include flash in php

Методы, которые следуют соглашениям Java для геттеров и сеттеров (методы без аргументов с именами, начинающимися с методов get и single-argument с именами, начинающимися с набора) представлены в качестве свойств в Kotlin. Но, генерируя свойство для пары get/set Java, Kotlin сначала ищет геттер. Геттера достаточно, чтобы вывести тип свойства из типа получателя. С другой стороны, свойство не будет создано, если присутствует только сеттер (поскольку в это время Kotlin не поддерживает свойства set-only).

Когда сеттер входит в игру, процесс генерации собственности становится немного неоднозначным. Причина в том, что геттер и сеттер могут иметь различный тип. Более того, геттер и/или сеттер могут быть переопределены в подклассе, что в точности относится к EditText в android.

В приведенном выше случае класс Android TextView содержит геттер

и недействительным сеттера

Если бы у меня была переменная типа TextView, мой код работал бы нормально. Но я использовал класс EditText, который содержит переопределенный getter

это означает, что вы можете получить редактируемый для EditText и установить Editable для EditText. Поэтому Котлин разумно создает синтетический текст свойства типа Editable. Поскольку класс String не редактируется, вот почему я не могу назначить экземпляр String для свойства text класса EditText.

Похоже, что JetBrains забыл указать доминирующую роль методов getter при генерации свойств kotlin для методов getter и setter для Java. В любом случае, я отправил запрос тянуть на сайт Jet мозгов kotlin через github.

editText.setText("Your text here") 

Источник

Kotlin Android TextView и EditText – отображение текста

Android TextView и EditText — это пользовательские интерфейсы, которые отображают текст для пользователя в Kotlin.

Ниже показан простой XML-код TextView в макете.

Читайте также:  Photos

Мы можем получить и изменить содержимое текстового представления, определенного в макете XML в файле класса Котлин, как:

val textView = findViewById(R.id.text_view_id) textView.setText("string").toString() val textViewValue = textView.text

EditText — это пользовательский интерфейс, который используется для ввода и изменения текста. При использовании текста редактирования в макете XML мы должны указать его атрибут inputType, который настраивает клавиатуру в соответствии с упоминанием типа ввода.

Простой XML-код EditText в макете показан ниже.

Мы можем получить и изменить содержимое текста редактирования, определенного в макете XML в файле Kotlin, как:

val editText = findViewById(R.id.editText_id) val editTextValue = editText.text

Пример Kotlin Android TextView и ExitText

В этом примере мы вводим текстовое значение в ExitText и отображаем его значение в TextView при нажатии кнопки.

Мы также наблюдаем за изменениями, сделанными над EditText, используя метод addTextChangedListener() и интерфейс TextWatcher.

Activity_main.xml

В файл activity_main.xml добавьте следующий код.

MainActivity.kt

Добавьте следующий код в класс MainActivity.kt. В этом классе мы получаем значение редактируемого текста и отображаем его в текстовом виде, нажав кнопку. При этом мы также наблюдаем за изменениями, сделанными над EditText, с помощью метода addTextChangedListener() и интерфейса TextWatcher. Чтобы узнать больше о TextWatcher, обратитесь к https://www.javatpoint.com/android-edittext-with-textwatcher.

package example.javatpoint.com.kotlintextviewedittext import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.text.Editable import android.text.TextWatcher import android.view.View import android.widget.TextView import android.widget.Toast import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() < override fun onCreate(savedInstanceState: Bundle?) < super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) button.setOnClickListener()< val inputValue: String = editText.text.toString() if(inputValue == null || inputValue.trim()=="")< Toast.makeText(this,"please input data, edit text cannot be blank",Toast.LENGTH_LONG).show() >else < textView4.setText(inputValue).toString() >> textView5.setOnClickListener()< if(textView4.text.toString() == null || textView4.text.toString().trim()=="")< Toast.makeText(this,"clicked on reset textView,\n output textView already reset",Toast.LENGTH_LONG).show() >else < textView4.setText("").toString() >> editText.addTextChangedListener(object: TextWatcher < override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) < // TODO("not implemented") //To change body of created functions use File | Settings | File Templates. Toast.makeText(applicationContext,"executed before making any change over EditText",Toast.LENGTH_SHORT).show() >override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) < // TODO("not implemented") //To change body of created functions use File | Settings | File Templates. Toast.makeText(applicationContext,"executed while making any change over EditText",Toast.LENGTH_SHORT).show() >override fun afterTextChanged(p0: Editable?) < // TODO("not implemented") //To change body of created functions use File | Settings | File Templates. Toast.makeText(applicationContext,"executed after change made over EditText",Toast.LENGTH_SHORT).show() >>) > >

Источник

Читайте также:  Python dictionary merge dictionaries

Kotlin set edittext value

Learn Latest Tutorials

Splunk tutorial

SPSS tutorial

Swagger tutorial

T-SQL tutorial

Tumblr tutorial

React tutorial

Regex tutorial

Reinforcement learning tutorial

R Programming tutorial

RxJS tutorial

React Native tutorial

Python Design Patterns

Python Pillow tutorial

Python Turtle tutorial

Keras tutorial

Preparation

Aptitude

Logical Reasoning

Verbal Ability

Company Interview Questions

Artificial Intelligence

AWS Tutorial

Selenium tutorial

Cloud Computing

Hadoop tutorial

ReactJS Tutorial

Data Science Tutorial

Angular 7 Tutorial

Blockchain Tutorial

Git Tutorial

Machine Learning Tutorial

DevOps Tutorial

B.Tech / MCA

DBMS tutorial

Data Structures tutorial

DAA tutorial

Operating System

Computer Network tutorial

Compiler Design tutorial

Computer Organization and Architecture

Discrete Mathematics Tutorial

Ethical Hacking

Computer Graphics Tutorial

Software Engineering

html tutorial

Cyber Security tutorial

Automata Tutorial

C Language tutorial

C++ tutorial

Java tutorial

.Net Framework tutorial

Python tutorial

List of Programs

Control Systems tutorial

Data Mining Tutorial

Data Warehouse Tutorial

Javatpoint Services

JavaTpoint offers too many high quality services. Mail us on h[email protected], to get more information about given services.

  • Website Designing
  • Website Development
  • Java Development
  • PHP Development
  • WordPress
  • Graphic Designing
  • Logo
  • Digital Marketing
  • On Page and Off Page SEO
  • PPC
  • Content Development
  • Corporate Training
  • Classroom and Online Training
  • Data Entry

Training For College Campus

JavaTpoint offers college campus training on Core Java, Advance Java, .Net, Android, Hadoop, PHP, Web Technology and Python. Please mail your requirement at [email protected].
Duration: 1 week to 2 week

Like/Subscribe us for latest updates or newsletter RSS Feed Subscribe to Get Email Alerts Facebook Page Twitter Page YouTube Blog Page

Источник

Оцените статью