2017-12-24 20 views
0

私は、ユーザーがonclickアクションなしでkeyboradでsometingを書くときにテキストを自動的に変換できるアプリケーションを作成しようとしています。私はgetTextをeditextから取得し、 TextWatcherを使用しようとしましたが動作しません。 ここに私のコードです:onclickを使わないでedttextにテキストを設定する

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

      } 

     }); 

答えて

0

あなたは無限の再帰を中断する必要があります!

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

代わりに入力された値の形式textを取得する、あなたは方法のCharSequence sを使用してtextビューに割り当てる変換した後、必要があります。

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

私はこの問題は、この行であると思います。

これがあなたの問題を解決することを願っています。あなたがTextWatcherを実装することによってこの問題を解決することができます

0

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 
    } 
}); 
関連する問題