调用 String 方法会使 TextWatcher 中的应用程序崩溃
Calling String methods crashes the application inside TextWatcher
我正在尝试检索在 EditText
视图中按下了哪个键,并将其设置为同一 activity 中 TextView
的文本。例如,如果最后按下的键是字母 't',那么我希望 't' 显示在 TextView
中(而不是整个字符序列)。
我尝试了以下方法:
phoneInput.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
tracker.setText(s.charAt(start));
}
@Override
public void afterTextChanged(Editable s) {
}
});
这导致了崩溃。我不确定,但看起来 start
是最后一次按键时附加的字符的索引,所以 TextView
应该显示在 EditText
?[=19= 中输入的最后一个字符]
我也试过这个:
phoneInput.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after){}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
String sequence = s.toString();
tracker.setText(sequence.charAt(sequence.length() - 1));
}
@Override
public void afterTextChanged(Editable s) {}
});
我猜想使用任何 String 方法都会导致崩溃,即使是 length()
。我做错了什么?
你必须这样尝试
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
textView.setText(String.valueOf(charSequence.charAt(i1)));
}
@Override
public void afterTextChanged(Editable editable) {
}
});
在 onTextChanged() 的回调中使用下面的代码
String text = charSequence.toString();
if (text.length() >0) {
Character character = text.charAt(text.length()-1);
Character character1 = character;
tv.setText(character1.toString());
} else {
// if you want to remove last character too then setText(""");
}
希望对您有所帮助。
我正在尝试检索在 EditText
视图中按下了哪个键,并将其设置为同一 activity 中 TextView
的文本。例如,如果最后按下的键是字母 't',那么我希望 't' 显示在 TextView
中(而不是整个字符序列)。
我尝试了以下方法:
phoneInput.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
tracker.setText(s.charAt(start));
}
@Override
public void afterTextChanged(Editable s) {
}
});
这导致了崩溃。我不确定,但看起来 start
是最后一次按键时附加的字符的索引,所以 TextView
应该显示在 EditText
?[=19= 中输入的最后一个字符]
我也试过这个:
phoneInput.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after){}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
String sequence = s.toString();
tracker.setText(sequence.charAt(sequence.length() - 1));
}
@Override
public void afterTextChanged(Editable s) {}
});
我猜想使用任何 String 方法都会导致崩溃,即使是 length()
。我做错了什么?
你必须这样尝试
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
textView.setText(String.valueOf(charSequence.charAt(i1)));
}
@Override
public void afterTextChanged(Editable editable) {
}
});
在 onTextChanged() 的回调中使用下面的代码
String text = charSequence.toString();
if (text.length() >0) {
Character character = text.charAt(text.length()-1);
Character character1 = character;
tv.setText(character1.toString());
} else {
// if you want to remove last character too then setText(""");
}
希望对您有所帮助。