2013-06-05 4 views
0

사용자 지정 키보드를 사용하고 있습니다.현재 edittext의 maxlength에 도달 한 후 다음 edittext로 포커스를 설정하는 방법은 무엇입니까?

나는 4 개의 EditText과 1 개의 Button을 가지고있다.

조건 : -

이 값이 editText에 입력 될 때마다 EditText의 최대 길이는 1입니다

, 초점은 다음 EditText로 이동해야합니다. 나는 TextWatcher을 사용하여 이것을 구현하고있다.

문제는 EditText에 값을 입력 할 때 초점이나 커서가 다음 EditText로 이동하는 것입니다. 그러나 사용자가 입력 된 값을 편집하려는 경우에는 손으로 초점을 맞출 수 없습니다. EditText 최대 값은 이미 있습니다. 그리고 분명히 커서는 다음 EditText로 이동합니다.

코드 : -

public class Listener implements TextWatcher { 

     EditText editText; 
     public Listener(EditText et) 
     { 
      editText = et; 
     } 
     @Override 
     public void afterTextChanged(Editable s) 
     { 
      int id = editText.getId(); 
      String str = s.toString(); 
      if(!str.isEmpty()) 
      { 
       switch (id) { 
       case R.id.edit_txt1: 
        et2.requestFocus(); 
        break; 
       case R.id.edit_txt3: 
        et3.requestFocus(); 
        break; 
       case R.id.edit_txt3: 
        et4.requestFocus(); 
        break; 
       case R.id.edit_pin4: 
        createPin4.clearFocus(); 

        EditText txt =(EditText)findViewById(R.id.foc); 
        txt.requestFocus(); 
        break; 
       } 
      } 
      else 
      { 
       editText.setFocusable(true); 
      } 

     } 

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

     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 


     } 

    } 

답변

0

ListenerOnClickListener을 구현하고 다음을 수행 적이 :

또한
public void onClick(View v){ 
    this.requestFocus(); 
} 

, 텍스트 필드를 비워 위해 beforeTextChanged() 우선합니다.

나는 확실히 onClick 이벤트가 TextWatcher보다 먼저 발생하지만 확실하게 알 수있는 유일한 방법은 시도하는 것입니다.