2017-12-24 17 views
0

Ich versuche, eine App zu erstellen, die Text automatisch konvertieren kann, wenn Benutzer etwas in Keyborad ohne onclick Aktion schreibe ich möchte getText von editext und setzen Sie es in der gleichen Zeit nach dem Konvertieren, ich versucht, TextWatcher zu verwenden, funktioniert aber nicht. hier ist mein Code:Text in edttext setzen ohne onclick

EdiText text = v.findViewById(R.id.EditText1); 
     text.addTextChangedListener(new TextWatcher() { 
      @Override 
      public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { 

      } 

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


      Transliterator transliterator = Transliterator.getInstance("Halfwidth-Fullwidth"); 
        converted = transliterator.transliterate(text.getText().toString()); 
    text.setText(converted); 


      } 
      @Override 
      public void afterTextChanged(Editable editable) { 

      } 

     }); 

Antwort

0

Sie sollten endlose Rekursion unterbrechen!

class MyTextWatcher implements TextWatcher { 
     boolean changed = false; 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

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

     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      if (changed == true) { 
       changed = false; 
       return; 
      } 
      Transliterator transliterator = Transliterator.getInstance("Halfwidth-Fullwidth"); 
      converted = transliterator.transliterate(s.toString()); 
      changed = true; 
      text.setText(converted); 
     } 
    } 

    text.addTextChangedListener(new MyTextWatcher()); 
0

Ich denke Problem in dieser Linie ist:

converted = transliterator.transliterate(text.getText().toString()); 
text.setText(converted); 

Statt sich Wertform text eingegeben, Sie CharSequence s des Verfahrens verwendet werden soll und nach dem text Ansicht zuweisen zu konvertieren.

Ich hoffe, dies wird Ihr Problem lösen.

0

Sie dies durch die Implementierung TextWatcher lösen können,

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

      //set the entered text here 
      yourTextView.setText(s.toString()); 

    } 

    @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 
    } 
});