Событие клавиатуры
Я новичок в котлине и немного не понимаю, как словить событие, когда прользователь вводит в что-то EditText поле? Например, как сделать, чтобы, когда пользователь вводит что-либо и оно дублирует его в TextView?
Ответы (3 шт):
Автор решения: Andrew
→ Ссылка
Есть слушатель изменений текста addTextChangedListener:
EditText editText = (EditText) findViewById(R.id.editText);
editText.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {}
public void beforeTextChanged(CharSequence s, int start,int count, int after) {
}
public void onTextChanged(CharSequence s, int start, int before, int count) {
TextView textView = (TextView) findViewById(R.id.textView);
textView.setText(s);
}
});
вот туториал по вашему вопросу.
UPDATE_KOTLIN
val editText: EditText = findViewById(R.id.editText)
editText.addTextChangedListener(object :TextWatcher{
override fun afterTextChanged(p0: Editable?) {
}
override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
}
override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
val textView = findViewById<View>(R.id.textView) as TextView
textView.text = s
}
})
Автор решения: Maks
→ Ссылка
Думаю это вам поможет:
class MainActivity:AppCompatActivity() {
overridefunonCreate(savedInstanceState:
Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
editTextSample.addTextChangedListener(object:TextWatcher{
overridefunafterTextChanged(s:Editable) {}
overridefunbeforeTextChanged(s:CharSequence, start:Int,count:Int, after:Int) {}
overridefunonTextChanged(s:CharSequence,start:Int,before:Int, count:Int){
tvSample.setText("Text in EditText : "+s)
}
})
}
}
Автор решения: tosh17
→ Ссылка
По скольку вы используете kotlin, то рекомендую использовать ktx
Для начала добавте зависимости в gradle
android {
...
compileOptions {
sourceCompatibility 1.8
targetCompatibility 1.8
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8.toString()
}
}
dependencies {
...
implementation 'androidx.core:core-ktx:1.3.0'
}
После чего в коде можете использовать более простые конструкии
editText.doOnTextChanged { text, start, count, after ->
}