2012-04-11 1 views
0

사용자가 플래그가 지정된 단어를 입력 할 때이를 감지 할 수있는 EditText가 있습니다. 이 단어가 감지되면 버튼이 표시되고 사용자는 더 많은 옵션을 사용할 수 있습니다. TextWatcher로이 작업을 수행 할 수있었습니다. 문제는 Textwatcher에 의해 감지 될 때마다 배열에 사용 된 플래그가 지정된 단어를 저장한다는 것입니다. 그러나 단어가 EditText에 있으면 나중에 입력 된 모든 문자가 플래그가 지정된 단어가 EditText에 있기 때문에 다시 플래그가 지정된 단어가 배열에 입력됩니다. TextWatcher를 지울 수있는 방법이 있는지 궁금 해서요. 일단 플래그가있는 단어를 발견하면, 그 텍스트는 내가 입력 한 것만보기 시작합니다. 아래 코드의 변수 word는 프로그램에서 확인중인 플래그가있는 단어가 저장되는 곳입니다.특정 문자열을 감지하고 EditText를 계속 읽을 때마다 TextWatcher를 지우려고합니다.

txtMessage.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void onTextChanged(CharSequence s, int start, int before, 
       int count) { 

      // TODO Auto-generated method stub 
     } 

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

      // TODO Auto-generated method stub 
     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      // TODO Auto-generated method stub 
      String tmp = s.toString().trim().toLowerCase(); 
      if (flagged == true) { 
       CheckWords.setVisibility(0); 
      } 
      if (tmp.contains(word.toLowerCase())) { 
       flagwordsused[i] = word; 
       //txtPhoneNo.setText(""+tmp); 

       i++; 
       flagged = true; 
      } 

     } 
    }); 

도움을 주시면 감사하겠습니다. 어쩌면이 작업을 수행하는 완전히 다른 방법이있을 수 있습니다.

답변

1

알겠습니다. tmp 문자열을 부분 문자열로 나누고 플래그 단어가 전체 EditText 대신 부분 문자열 중 하나에 포함되어 있는지 확인하면됩니다.