Android-Change Edittext после каждого изменения - PullRequest
3 голосов
/ 18 сентября 2011

как я могу добавить Char, такой как этот тире '-' после каждого изменения в edtitext, например, если пользователь вводит A, тогда текст в тексте редактирования будет A-, тогда пользователь завершит работу и введет Char B, тогда текст редактирования будет AB Как это реализовать? спасибо

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){


               }

Ответы [ 4 ]

4 голосов
/ 18 сентября 2011

У вас бесконечный цикл, как описано в Android Doc

но будьте осторожны, чтобы не оказаться в бесконечном цикле, потому что любые внесенные вами изменения приведут к повторному вызову этого метода.

Так что все, что вам нужно сделать, это просто наложить условие, чтобы избежать бесконечного цикла. Например,

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) {
        }

    });
1 голос
/ 18 сентября 2011

Добавьте символ - в 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){}
  }
1 голос
/ 18 сентября 2011

Добавьте TextWatcher, используя addTextChangedListener().

0 голосов
/ 18 сентября 2011
    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){

               }
...