2013-05-03 5 views
-4

나는 EditText가 있습니다. 버튼 클릭시 EditText의 setText() 메소드가 호출됩니다. 버튼 클릭을 사용하거나 사용자가 수동으로 위치를 입력하면 신원 확인을 원합니다. 나는 TextWatcher를 사용했다. afterTextChange()는 사용자가 수동으로 위치를 입력하고 setText가 사용될 때 호출된다.Android : setText와 수동으로 입력 한 텍스트를 구분하는 방법

editext를 수동으로 편집하거나 프로그래밍 방식으로 편집하는 경우 장면을 식별 할 수 있습니까?

도와주세요.

귀하를 진심으로 감사드립니다.

+0

프로그램이 텍스트를 설정하면 매우 기본적인 방식으로이를 기억할 수 있다고 생각할 것입니다. 아니면 소프트웨어가 알츠하이머 병을 나타내는 경우 이미 알려진 사례가 있습니까? –

+0

이것은 매우 일반적입니다 ... 언제 그들이 텍스트를 입력했는지 확인하고 싶습니까? 그들이 버튼을 클릭하면? 그들이 화면을 만졌을 때? 키보드가 더 이상 보이지 않을 때? – o0rebelious0o

+0

edittext에서 텍스트 워처를 사용하십시오. – Raghunandan

답변

3

은 당신이 뭔가를 할 수 있습니다 : 다음

private boolean isTextSetProgrammatically = false; 

private void setTextProgrammatically(String text){ 

myEditText.removeTextChangedListener(instanceOfMyTextWatcher); 
myEditText.setText(text); 
isTextSetProgrammatically = true; 
myEditText.addTextChangedListener(instanceOfMyTextWatcher) 

} 

그리고 또한 글고 치기에 TextWatcher를 설정하고 onTextChanged()가 트리거됩니다 때 false로 isTextSetProgrammatically을 설정합니다.

+0

settext()를 통해 텍스트를 설정할 때 onTextChanged()도 호출됩니다. ... –

+0

@PankajKumar 맞습니다. 잠깐, 내 대답을 편집하겠습니다. – Ahmad

+0

:) 확실히 ... 가십시오 –

-2

사용자 정의 EditText를 작성하여 EditText를 확장하고 setText() 메소드를 대체 할 수 있습니다.

@override 
public void setText(CharSequence str) { 
    super.setText(...); 
    // to do you callback 
} 
+0

안돼! setText는 최종 메소드이며 사용자 정의 편집 텍스트에서 변경할 수 없습니다. – Antrromet

0

아마드가 제안한 텍스트 워처를 사용하십시오. 편집 텍스트에서 유형을 사용하면 알 수 있습니다.

EditText search= (EditText) findViewById(R.id.search); 
    search.addTextChangedListener(new TextWatcher() { 

     public void onTextChanged(CharSequence s, int start, int before, int count) { 
       // s is the typed character sequence. 

     } 

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


     } 

     public void afterTextChanged(Editable s) { 
     } 
     }); 
관련 문제