2011-09-18 62 views
3

如何在edtitext每次更改之后添加Char如此短划线 - 例如,如果用户输入A,则edittext中的文本将为A-然后用户将完成并输入字符B然后编辑文本将是AB 如何实现这一点?感谢Android-Change Edittext每次更改后

name = (EditText)findViewById(R.id.editText1); 
     name.addTextChangedListener(new TextWatcher(){ 
      public void afterTextChanged(Editable s) { 

       name.setText("-"); 
       } 
    public void beforeTextChanged(CharSequence s, int start, int count, int after){} 
     public void onTextChanged(CharSequence s, int start, int before, int count){ 


       } 
+0

PH7一样在他的[答案]说(http://stackoverflow.com/questions/7459966/android-change-edittext-after-each-change/7460503#7460503)波纹管,你是进入一个无限循环,就像提醒一样,不要忘记,当您调用EditText.setText()时,您正在清除之前在edittext框中的所有内容并将其替换,而不仅仅是追加。 – kaneda

+0

@Dev你解决了你的问题 – Smily

回答

1
+0

我已经使用Textwatcher,但是当我打电话给setText显示一个异常 – Dev

+0

在这种情况下,最好让我们看看代码和异常... – MByD

+0

@Downvoter一年后 - 谨慎解释? – MByD

1
name = (EditText)findViewById(R.id.editText1); 
      name.addTextChangedListener(new TextWatcher(){ 
       public void afterTextChanged(Editable s) { 
       try{  
        name.setText(s.toString()+"-"); 
       }catch(exception e) 
       { 
       e.printStackTrace(); 
       } 
        } 
     public void beforeTextChanged(CharSequence s, int start, int count, int after){} 
      public void onTextChanged(CharSequence s, int start, int before, int count){ 

       } 
+0

谢谢但是当我开始写一个应用程序将强制停止:( – Dev

+0

请帮助,我不知道为什么强制停止 – Dev

+0

然后尝试捕捉什么异常其投掷看到我的编辑代码 –

1

追加-焦炭在beforeTextChagned

name = (EditText)findViewById(R.id.editText1); 
    name.addTextChangedListener(new TextWatcher() { 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
      name.setText(s+"-"); 
     } 
     public void afterTextChanged(Editable s){} 
     public void onTextChanged(CharSequence s, int start, int before, int count){} 
    } 
+0

仍然强制关闭,我不知道为什么。如果我删除setText()没有强制关闭 – Dev

+0

wt异常你得到日志 – Ronnie

+0

我在哪里可以找到异常,我是初学者在android – Dev

4

你有无限循环中的Android文件

描述,但要小心不要让自己陷入死循环,因为任何您所做的更改将导致此方法再次被递归调用。

所以你所要做的只是强加一个条件来避免无限循环。例如,

name.addTextChangedListener(new TextWatcher() { 
     public void afterTextChanged(Editable s) { 
      if(s.charAt(s.length()-1)!='-'){ 
       s.append("-"); 
      } 

     } 

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

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

    }); 
+0

当我添加s.append(“ - ”),然后我的editText显示我:无论 - ,但光标出现一个字符后面' - ',当我放置editText.setSelection(editText.getText()。length())时,光标仍然出现在相同的位置,你能帮我一下吗? –