안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요//
EditText 두개를 액티비티에 띄워놓고
1번 EditText에 10진수를 입력하면 ----> 2번 EditText에서 16진수로 뿌려주고,
2번 EditText에 16진수를 입력하면 ----> 1번 EditText에서 10진수로 뿌려주는 컨버터를 만들고있습니다.
버튼없이 그냥 내용을 입력하면 바로 뿌려주는 형식입니다.
이러케 하니까,,당연한 결과겠지만,,서로 무한으로 계속 바꿔줍니다.
1번 editText에 내용을 넣으면 리스너가 작동해서 2번에 뿌려줍니다,
그럼 2번 editText 리스너가 자동으로 걸리면서 또 1번을 바꿔줍니다..그럼 또 1번이 2번을,,
이런식으로..ㅜ.ㅠ
계속 도네요,,ㅎㄷㄷ
이거 막는방법을 생각해봤는데..
1. onKeyListener안에 textChagendWatcher를 넣던지..(어떻해 하는지 막막함)
2. api문서에서 TextWatcher를 보니까 무한 루프를 막기위해서 어떻해 한다는데,,도저히 어떻해 하는지 모르겠네요.ㅜ..ㅠ
3. 1번 textWatcher가 작동하는 도중엔 2번 textWatcher을 잠시 꺼두는 방법<--이런게 있나요?ㅜ.ㅠ
해결방법..부탁드립니다..ㅜ.ㅠ
간단하게 몇줄 예제도 같이 만들어주시면 정말 감사합니다..ㅜ.ㅠ
감사합니다.
EditText 두개를 액티비티에 띄워놓고
1번 EditText에 10진수를 입력하면 ----> 2번 EditText에서 16진수로 뿌려주고,
2번 EditText에 16진수를 입력하면 ----> 1번 EditText에서 10진수로 뿌려주는 컨버터를 만들고있습니다.
버튼없이 그냥 내용을 입력하면 바로 뿌려주는 형식입니다.
//에디트택스트 두개 연결 et10jin = (EditText)findViewById(R.id.ET_10jin); et16jin = (EditText)findViewById(R.id.ET_16jin); // addTextChangedListener 두개 선언 et10jin.addTextChangedListener(w10jin); et16jin.addTextChangedListener(w16jin); TextWatcher w10jin = new TextWatcher(){ public void afterTextChanged(Editable arg0) { // ignore } public void beforeTextChanged(CharSequence s, int start, int count, int after) { // ignore } public void onTextChanged(CharSequence s, int start, int before, int count) {
temp_dec = s.toString(); int tmp_dec; tmp_dec = Integer.parseInt(temp_dec); //10진수------>16진수 String tmp_hex; tmp_hex = Integer.toHexString(tmp_dec).toUpperCase(); et16jin.setText(tmp_hex); } }; TextWatcher w16jin = new TextWatcher(){ public void afterTextChanged(Editable arg0) { // ignore } public void beforeTextChanged(CharSequence s, int start, int count, int after) { // ignore } public void onTextChanged(CharSequence s, int start, int before, int count) {
temp_hex = s.toString(); //16진수--------->10진수 int tmp_dec; tmp_dec = Integer.parseInt(temp_hex, 16); et10jin.setText(Integer.toString(tmp_dec)); } };
이러케 하니까,,당연한 결과겠지만,,서로 무한으로 계속 바꿔줍니다.
1번 editText에 내용을 넣으면 리스너가 작동해서 2번에 뿌려줍니다,
그럼 2번 editText 리스너가 자동으로 걸리면서 또 1번을 바꿔줍니다..그럼 또 1번이 2번을,,
이런식으로..ㅜ.ㅠ
계속 도네요,,ㅎㄷㄷ
이거 막는방법을 생각해봤는데..
1. onKeyListener안에 textChagendWatcher를 넣던지..(어떻해 하는지 막막함)
2. api문서에서 TextWatcher를 보니까 무한 루프를 막기위해서 어떻해 한다는데,,도저히 어떻해 하는지 모르겠네요.ㅜ..ㅠ
3. 1번 textWatcher가 작동하는 도중엔 2번 textWatcher을 잠시 꺼두는 방법<--이런게 있나요?ㅜ.ㅠ
해결방법..부탁드립니다..ㅜ.ㅠ
간단하게 몇줄 예제도 같이 만들어주시면 정말 감사합니다..ㅜ.ㅠ
감사합니다.
onKeyUp 을 쓸때만 리프레쉬 하게 만들어 주시면 안되나요?
그러면 마지막 수를 넣고 키누른것에서 손을 땟을 때
리프래쉬를 시키면 될거 같은데........... 그냥 제 생각입니다.^^