afterTextChanged()
은 언제든지 EditText
텍스트가 변경되고 (즉, 충돌이 발생한다는 것을 알았 음) 알아 냈습니다.하지만 문제를 해결하는 방법을 모르겠습니다. 아무도 도와주세요!TextWatchers afterTextChanged() 충돌 계속
편집 텍스트를 설정하고 EditText
의 텍스트가 정확한지 addTextChangedListener
editText= (EditText) findViewById(R.id.editText);
editText.setInputType(InputType.TYPE_NULL);
editText.addTextChangedListener(textWatcher);
textWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
//editText.removeTextChangedListener(textWatcher); //this doesn't help
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
// Toast.makeText(mainAct, "OK",Toast.LENGTH_SHORT).show();
String user_answer =editText.getText().toString();
user_ans_int = Integer.parseInt(user_answer);
이 확인해야 추가하고이 또한 어디에 (가 완벽하게 실행이 부분없이) 응용 프로그램이 충돌
if (user_ans_int == answer){
Toast.makeText(mainAct, "True", Toast.LENGTH_SHORT).show();
editText.setText("");
}
else {
Toast.makeText(mainAct, "Naaw - try again haha", Toast.LENGTH_SHORT).show();
editText.setText("");//delete text after checking
tru = false;
}
}
};
}
입니다
여기에 예외 사항은 무엇입니까? – Amsheer
오류가 발생하면 텍스트가 변경 될 때 호출되는 콜백의 텍스트가 변경됩니다. 끝없는 재귀가 발생합니다. 그것이 그 이유 일 것입니다. –
나는 그것이 두 번째로 editText 내용을 분석하려고 할 때 실패하기 때문에 끝없는 재귀로 진행되지 않는다고 생각한다. 이 시점에서 내용은 ""이므로 Integer로 구문 분석 할 수 없으며 실패합니다. if ... else 문에서 텍스트를 숫자로 설정하면 제안한대로 끝나는 순환이 종료됩니다. – Thanos