2013-11-24 9 views
0

내 앱에 "edittext"가 있는데, 소프트 키보드에서 특정 문자를 누르면 할 일을하고 싶습니다. 나는 어떤 방법으로 stackOverflow가 제안하는 방법을 시도했지만 문자/a, b/B 등은 감지되지 않습니다. 그러나 Enter와 Del은 수행합니다. 로드를 읽은 후 여기에있는 예에 따라 edittext 클래스를 재정의해야합니다. 내가 여기에 방법을 재정의하고 있습니다 :Android 소프트 키보드 문자가 감지되지 않습니다.

@Override 
    public boolean sendKeyEvent(KeyEvent event) { 
     if (event.getAction() == KeyEvent.ACTION_DOWN 
       && event.getKeyCode() == KeyEvent.KEYCODE_A) { 
      ZanyEditText.this.setRandomBackgroundColor(); 

      return false; 
     } 
     return super.sendKeyEvent(event); 
    } 

는 또한 표준의 EditText의 onKeyListener을 재정의하는 시도 :

txtSMS.setOnKeyListener(new View.OnKeyListener() { 
      @Override 
      public boolean onKey(View v, int keyCode, KeyEvent event) { 
       // You can identify which key pressed buy checking keyCode value 
       // with KeyEvent.KEYCODE_ 
       if (keyCode == KeyEvent.KEYCODE_DEL) { 
        // this is for backspace 
        Toast.makeText(getApplicationContext(), "Del was pressed", Toast.LENGTH_SHORT).show(); 
       } 
       if (keyCode == KeyEvent.KEYCODE_A) { 
        // this is for backspace 
        Toast.makeText(getApplicationContext(), "A was pressed", Toast.LENGTH_SHORT).show(); 
       } 
       return false; 
      } 

을 그러나 델의 두 경우 모두에서 지금까지 발견된다. 내가 어떻게 알파벳의 문자를 감지 할 수 없습니까? 그들은 ... 텍스트 상자에

감사

답변

0

나는 비슷한 issure을 가졌다 나타납니다, 당신은 TextWatcher를 사용하고 ('서브 순서'를 사용)를 입력 할 수있는 마지막 문자가 무엇인지 인식 할 필요가있다. 사용 로직은 결정하는 A가 입력 된 누르거나 한 삭제이

아래

참조 코드 도움이되기를 바랍니다합니다 :

editText.addTextChangedListener(new TextWatcher() { 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, 
       int count) { 
      // TODO Auto-generated method stub 
      //this is the method that detects the last entry below 
      String c = s.subSequence(before, before + 1).toString(); 
      //check for delete 
      if (before < s.length()) { 
       String c = s.subSequence(before, before + 1).toString(); 
       //see if a was entererd 
       if (c == a) { 
        //a entered 

       } 
      } else { 
       //delete pressed 

      } 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, 
       int after) { 
      // TODO Auto-generated method stub 

     } 

    });