2011-09-18 3 views
1

이 내 코드이지만, 나는 내가 아주 비슷한 문제를 경험 한하지수 없습니다 명확 글고

TWL=new TextWatcher(){ 


      public void afterTextChanged(Editable s) { 



      } 


      public void beforeTextChanged(CharSequence s, int start, int count, 
        int after) { 


      } 


      public void onTextChanged(CharSequence s, int start, int before, 
        int count) { 
       name.removeTextChangedListener(this);//after this line you do the editing code 


       name.setText(s+"-"); 
       name.setSelection(name.getText().length()); 



       name.addTextChangedListener(TWL); // you register again for listener callbacks 

      }}; 
     name = (EditText)findViewById(R.id.editText1); 
     name.addTextChangedListener(TWL); 
+1

왜 당신이 리스너를 제거합니까 후 다시 추가하는 데 도움이 희망? 그것은 말도 안돼. 또한 코드에서 문자 제거가 보이지 않습니다. 하이픈을 추가하면됩니다. –

+0

코드에서 문자를 삭제하는 위치는 어디입니까? –

+0

@Henrique Rocha backspace를 입력 할 때 문자를 제거 할 수 없습니다. – Dev

답변

0

수있는 몇 가지 문자를 지울 때 문제의 setText() 후. OnKeyListener가있는 EditText가 있지만 edittext의 공간을 삭제하지 못했습니다 ("삭제 버튼"이벤트는 수신하지 않음). 청취자에게 "false"를 반환하려고했을 때 잘못된 점을 알아 냈습니다 (완료되지 않은 이벤트). 그것은 매력처럼 작동하지 않습니다. 그 위에 어떤 키 리스너가 없다고 확신합니까? 이 경우 이벤트를 "잡을"때 false를 반환합니까?

((EditText)findViewById(R.id.main_nome)).setOnKeyListener(new View.OnKeyListener() { 
     @Override 
     public boolean onKey(View view, int i, KeyEvent keyEvent) { 
      if (keyEvent.getKeyCode() == KeyEvent.KEYCODE_ENTER) { 
       //hide the keyboard 
       InputMethodManager imm= (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
       imm.hideSoftInputFromWindow(findViewById(R.id.main_nome).getWindowToken(), 0); 

       iniziaClicked(view); 
       findViewById(R.id.loseFocus).requestFocus(); 
      } 

      return false; 
     } 
}); 
관련 문제