2014-08-27 2 views
0

나는 입력하는 동안 EditText의 텍스트를 변경하려면 TextWatcher를 사용하고 있습니다. 문자열은 새/대체 된 텍스트를 이전 텍스트에 추가 한 다음 표시합니다. 새로운/대체 된 텍스트 만 표시하려고합니다. "이전"텍스트의 색인을 유지하고 대체 된 새 텍스트 만 표시하려고합니다. 그것이 올바른 방법인지 확실하지 않습니다. 잘못된 길을 가고있는 것일 수도 있습니다. 이것이 저에게 예외적 인 예외를 넘겨주는 이유입니다. 아무도 도와 줄 수 없습니까? 예를 들어, a를 입력하면 다음에 b를 입력 할 때 텍스트 상자에 표시된 텍스트가 aab이지 ab가 아니므로이 중복성을 제거하려고합니다. 다음은 내 코드입니다 : 그리고 한 줄의 문자 제한의 예를 들어 10을 초과하는 경우도 어떻게 새 줄 문자를 삽입 할 수 있습니다, 10 개 문자 후 문자는 내가이 코드를 시도 havent 한바운드 예외 TextWatcher에서

tw = new TextWatcher() 
{   
    public void beforeTextChanged(CharSequence s,int start,int count, int after){} 

    public void onTextChanged(CharSequence s, int start, int before, int count) 
    {        
     txtData.removeTextChangedListener(tw); 
     txtData.setText(s.toString().replace("\n", "*")) 
     txtData.addTextChangedListener(tw); 
    } 
}; 
txtData.addTextChangedListener(tw); 
+0

달성하고자하는 것은 무엇입니까? atm 당신이 쓰는 모든 편지는 개별적으로 처리됩니다. 나는 당신이 textview에서 현재 문자를 처리하려는 가정합니다. 그것은 s 일 것입니다. txtData에 getText()를 호출 할 필요가 없습니다. texttatcher가 첨부 된 edittext입니다. –

+0

Daniel에게 답장을 보내 주셔서 감사합니다. 귀하의 제안에 따라 코드를 변경했지만 문제는 남아 있습니다. 나는 여분의/반복 된 문자를 제거하고 n 개의 문자 다음에 새로운 행을 삽입하려고합니다. 예를 들어 문자 a를 입력하면 편집 문구에 표시되지만 다음 문자를 입력하려고하면 다음/새 텍스트에 이전 텍스트가 추가되고 aab 다음 aabaabc 다음 aabaabaabc가 추가됩니다. edittext에 abc를 표시하고 싶습니다. 어쨌든 중복 된 텍스트를 제거 할 수 있습니까? edittext에 10 자 뒤에 \ n say를 삽입 하시겠습니까? – user2387107

답변

0

다음 줄에 표시해야 , 나는 이것을 텍스트 편집기에서 만들었 기 때문에.

텍스트에 10 자마다 매듭 점을 추가해야합니다. 만약 그것이 \ n을 기호로 간주한다면, 그것을 확인하고 싶을지도 모르겠다. 블록 수를 계산할 경우 조금 더 복잡하게 만들어야합니다.

tw = new TextWatcher() 
{   
    public void beforeTextChanged(CharSequence s,int start,int count, int after){} 

    public void onTextChanged(CharSequence s, int start, int before, int count) 
    { 
     if (s.toString().length()%10 == 0) {        
      txtData.removeTextChangedListener(tw); 
      txtData.setText(s.toString() + "\n"); 
      txtData.addTextChangedListener(tw); 
     } 
    } 
}; 
txtData.addTextChangedListener(tw); 
+0

대단히 감사합니다. 이제는 작동합니다. 새 줄로 이동하지만 10자가 아닌 9 자마다 첫 줄의 (9)자를 계속 반복하고 줄이 끝날 때까지 새 줄을 추가합니다 . 한 줄에 총 26자를 사용할 수 있으며 단 10 자로 제한하고 싶었습니다. 첫 번째 줄을 제외하고는 솔루션이 완벽하게 작동하고 줄을 10 자 대신 9 자로 제한합니다. 왜 그런가? 주요 문제를 해결해 주셔서 다시 한번 감사드립니다. – user2387107

+0

이 줄 ** s.toString(). length() % 11 == 0) **을 사용하여이 줄 ** s.toString(). length() % 1 == 10) **을 변경했습니다. 이제 10 자까지. 이유는 모르겠지만, 첫 번째 줄은 여전히 ​​문제가 있습니다. 그게 출력입니다 ** 123456789- (다음 줄) 678901- (다음 줄) 2345678901- (다음 줄) 2345678901 ... 등등 ** – user2387107

+0

나는 이것을 직접 시도 할 프로젝트를 만들어야 할 것입니다. 나중에 살펴볼 것입니다. 에 :) –

관련 문제