2012-10-02 4 views
5

사용자가 edittext를 클릭하고 입력 한 문자를 컴퓨터에 입력하는 원격 키보드의 역할을하는 응용 프로그램을 만들고있었습니다.'Enter key'키지 않음 TextWatcher

TextWatcher를 사용하여 다양한 알파벳 및 숫자를 감지하여이를 내 서버로 성공적으로 보냈습니다.

사용자가 Enter 키를 누르면 문제가 발생합니다. 이것은 또한 TextWatcher를 트리거합니다. 그리고 내가 최근에 입력 한 변경 사항을 보내고 있기 때문에 서버 측에 오류가 나타납니다. 내가이 무슨 짓을했는지 솔루션으로

는 onkeylistener 다음뿐만 아니라 행동과 를 키 입력하고 수행 감지 어느 onkeylistener을 설정을 소비하지만, 불행히도 그 경우에도 첫 번째 textwatcher가 트리거됩니다합니다.

private TextWatcher watcher = new TextWatcher() { 
public void onTextChanged(CharSequence s, int start, int before, int count) { 
     if(count>0){ 
     out.println(":"+s.subSequence(start, start+count).toString()); 
     } 
    } 
      . 
      . 
      . 

문제는 그것이 TextWatcher의 onTextChanged를 발생 키뿐만 아니라 onkeylistener를 입력 눌러에 : 여기

내 onkeylistener 코드 TextWatcher의

keyboard.setOnKeyListener(new OnKeyListener() {     
    public boolean onKey(View v, int keyCode, KeyEvent event) {     
    if(keyCode == KeyEvent.KEYCODE_ENTER&&event.getAction()==KeyEvent.ACTION_UP){ 
        out.println("enter"); 
       return true; 
       } 
     return false; 
      } 
    }); 

의 코드입니다. 반면에 나는 오직 청취하는 키 리스너 만 원한다. 알파벳, 숫자, 기호 등의 경우에만 Textwatcher를 실행하고 싶습니다.

또한 문자를 감지하고 전송하는 다른 방법을 제안 할 수 있다면 (소프트) 좋을 것입니다.

+0

또한 cond를 넣어 보았습니다. TextWatcher 내에서 최근 변경 사항이 영숫자가 아닌 문자인지 확인합니다. 그럴 경우 out.println()을 사용하지 마십시오. 그러나 그것은 또한 작동하지 않습니다. 그것은 여전히 ​​엔터 키를 감지하고 if 조건을 입력하고 out.println()을 실행합니다. – PrateekArora

+0

좋아, 내가 해결했다고 생각해. Textwatcher에 다음 문을 추가합니다.if (s.toString(). substring (start) .contains ("\ n")) 마지막으로 입력 한 키가 'enter'이면 입력 한 다음 u 너 뭐든지 할 수있어. – PrateekArora

답변

1

좋아, 내가 해결했다고 생각해. 마지막 키는 다음이가로 갈 것이다 다음 u는 u는 원하는대로 수행 할 수있는 '입력'된 입력 한 경우 그 방법에

if(s.toString().substring(start).contains("\n")) 

: Textwatcher이 if 문을 추가합니다.

관련 문제