2017-09-12 6 views
0

edittext에서 한 문자 만 허용하는 시나리오가 있습니다. 하나 개의 문자가 입력되면 그렇게 onTextChanged 내가 체크 한 후 나는 다음 글고edittext 길이가 꽉 찬 경우 OnTextChanged가 호출되지 않습니다.

<EditText 
       android:id="@+id/etpinPassword1" 
       style="@style/Edittext_with_weight" 
       android:imeOptions="actionNext" 
       android:inputType="number" 
       android:maxLength="1" /> 

에 포커스를 전환하고 여기에 내는 textWatcher 코드 :

onTextChanged : ->

if (isValueEntered(charSequence)) { 
        etpinPassword2.requestFocus(); 
        etpinPassword2.setEnabled(true); 
        appendPassword(charSequence); 
       } 

private boolean isValueEntered(CharSequence charSequence) { 
     return charSequence.length() > 0; 
    } 

다 onTextChanged가 호출 된 적이없는 이미 편집 된 텍스트로 돌아 왔을 때를 제외하고는 정상적으로 작동합니다. 첫 번째 것이 이미 가득차면 다음 edittext로 초점을 전환 할 수 있도록 다시 호출하고 싶습니다.

+0

두 번째 방문시 채워진 편집 문구에서 텍스트를 삭제 하시겠습니까? –

+1

어떻게 채워진 EditText로 돌아갈 예정입니까? 초점이 다시 맞춰 졌는지 확인하십시오. 또한 텍스트를 변경하지 않으면 메소드가 호출되지 않습니다. –

+0

텍스트를 변경 한 리스너에서 조작을 입력하십시오. –

답변

0

문제는 최대 길이를 1로 설정하여 다른 문자를 입력하지 못하게하는 것입니다.

+0

어떻게 할 수 있습니까? maxLength를 1로 설정하고 1 자릿수를 입력 한 후 사용자가 입력했는지 확인하려고합니다. –

+0

사용자가 다른 문자를 제거하지 않고 다른 문자를 입력하는 이유는 무엇입니까? –

+0

이미 입력 했는데도 사용자가 입력 중이라면 다른 편집 텍스트로 이동해야한다는 점을 대비하고 싶습니다. 사실 저는 4 자리 핀 뷰를 만들고 있는데, 여기서 각 edittext에 대해 maxLength가 4 개인 edittext가 있습니다. –