안드로이드의 TextWatcher와 작업하고 있습니다. 사용자가 타이핑 한 것을 저장하고 저장 한 후에 Edittext에서 문자를 변경합니다. 예를 들어 "hi im happy"와 같은 상수 텍스트가 있고 edittext 사용자가 입력 한 모든 내용은이 텍스트가 쓰여지고 있음을 알 수 있습니다 (이 문자열은 사용자가 타이핑하는 동안 직렬 식으로 표시됩니다)! 사용자가 입력하고 변수에 저장되는 주 텍스트입니다. 나는 afterTextChanged 내부 코드를 사용 안드로이드의 텍스트 워처 내에서 두번 실행하지 못하도록
if(s.toString().charAt(s.length()-1) != 'a'){
//save inside freaktext variable(append)
freaktext=freaktext+s.toString().charAt(s.length()-1);
//change edittext value(what user see's)
txtfreak.setText(s.toString().substring(0, s.length()-1) + "a");
txtfreak.setSelection(txtfreak.getText().length());
}else{
freaktext=freaktext+"a";
}
내가 입력 한 문자가 "freaktext"라는 변수에 저장하고 글고 값을 변경하고 "A"문자를 넣어, "A"가 아닌 경우 내가 말할이 코드 edittext 안에있는 문자열의 끝. 하지만 사용자가 "a"를 입력하면 freaktext에 저장됩니다.
내 문제는 : 사용자가 "a"문자를 입력하지 않으면 모든 것이 잘 작동하고 내 코드는 입력 된 문자를 저장 한 다음 edittext 값을 수정하지만 edittext 값이 변경되면 전체 코드가 다시 실행되고 마지막으로 변경하기 때문에 "a"를 입력하면 코드의 두 번째 부분 (else)이 실행되고 저장된 문자열의 끝에 "a"를 다시 저장합니다. 사실 "q"라고 입력하면 저장된 문자열에 "qa"가 표시됩니다. 나는 그저 키보드에 "a"를 직접 입력하고 "a"를 저장하고 다른 상황에서는 저장하지 않기를 바란다. 사실 내 else 섹션은 사용자가 직접 키보드의 "a"키를 눌렀을 때만 실행됩니다.이 작업을 수행 할 수 있습니까? 나,이 코드는 어딘가에, 일일
함수 외부
와우! 고맙습니다. 나는이 방법을 여러 번 시도했지만 문제가 생길 때마다 내 코드가 아름답고 잘 포맷 된 적이 없었습니다. 하지만 코드가 잘 작동하고 내 친구에게 감사하고 싶습니다! :) – Fcoder