Установка текста в 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=
Методы, которые следуют соглашениям 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 в макете.
Мы можем получить и изменить содержимое текстового представления, определенного в макете 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() >>) > >
Kotlin set edittext value
Learn Latest Tutorials
Preparation
Trending Technologies
B.Tech / MCA
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