Как применить событие Textchange к EditText
Я разработал одно простое приложение, такие как вычитание, сложение. В этом приложении я использую три EditTexts, один для ответа и два других для вопроса. Я хочу рассчитать ответ на вопрос о событии изменения текста. Но когда я применяю событие изменения текста на обоих из них, событие происходит, но не работает должным образом. Потому что, когда я вхожу в текст в первом EditText вопроса, событие происходит, но оно вызывает это исключение:
07-03 16:39:48.844: E/EduApp Log :=>(12537): Error In Text change Event java.lang.NumberFormatException: unable to parse '' as integer
что мне делать?
Я использую TextWatcher
для изменения текста событие.
txtOne.addTextChangedListener(this);
txtTwo.addTextChangedListener(this);
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) {}
4 ответов
Я думаю, что вы получаете пустую строку " "
что вызывает эту проблему. Убедитесь, что вы получаете непустую строку из вашего EditText
.
рассмотреть ваши EditText
не имеет значения набирается, и вы пытаетесь получить его значение и преобразовать в int вы столкнетесь с этой проблемой.
edittext.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before,
int count) {
if(!s.equals("") ) {
//do your work here
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void afterTextChanged(Editable s) {
}
});
также проверьте эту ссылку для получения дополнительной идеи,
я использовал это, и это правильно:
public void afterTextChanged(Editable arg0) {
String inputs = input.getText().toString();
Integer index=0;
if(!inputs.equals(""))
index=Integer.valueOf(inputs);
}
Я думаю, что лучше всего, если тип edittext-это число... используйте (функцию длины) параметра вместо функции (equle ()) ex:
edittext.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before,
int count) {
if (s.length() > 0)
{ //do your work here }
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void afterTextChanged(Editable s) {
}
});
Я думаю,вам нужно проверить, что ваше значение editText пусто или нет. Что-то вроде этого:--2-->
String textValue;
textValue = edittext().getText().toString());
Log.v("","Value is " + textValue);
if(textValue != ""){
// Call Text Change Listener Here
}else{
// Throw error message or something
}
надеюсь, это поможет.