2011-09-18 63 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())時,光標仍然出現在相同的位置,你能幫我一下嗎? –