2017-07-06 11 views
0

オブジェクト。TextWatcher StringBuilderのメソッドを追加し、両方のStringBuilderにはCharSequenceを追加し、同時に別のStringBuilderオブジェクトの元の入力を維持しながら、私は、文字でのEditTextビューの表示された値を置き換えるためにしようとしている

は、ここでは、コードです:オリジナルキャラクターがinputedとしてトーストで

final StringBuilder stringBuilderHiddenPassword = new StringBuilder(); 
    final StringBuilder mPass = new StringBuilder(); 
    pass = new StringBuilder(); 
    etPassword.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      stringBuilderHiddenPassword.append("*"); 
      etPassword.removeTextChangedListener(this); 
      etPassword.setText(stringBuilderHiddenPassword); 
      etPassword.addTextChangedListener(this); 
     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      pass.append(s); 
      Toast.makeText(Pass.this, pass, Toast.LENGTH_SHORT).show(); 
     } 
    }); 

まずinputed文字表示されますが、第二一つは、それに*を追加します。だから私入力aa場合、私は入力aそれは、aが表示されている場合、それはaaaのために、それはそうでaa*a**だと、aa*を表示します。

は、どのように私は両方が同時に追加されることから、これらのオブジェクトを分離していますか?コードはstringBuilderHiddenPasswordに追加する必要がありますが、この方法がどのように機能するかは明らかです。元の文字列にreplaceメソッドを使用して、解決策を見つけた

答えて

0

replace = pass.toString().replace("*", ""); 
Toast.makeText(Pass.this, replace, Toast.LENGTH_SHORT).show(); 
+0

いいえ、これはあなたが何をすべきかではありません、あなたが代わりにカスタム 'TransformationMethod'を使用する必要があり、ドキュメントは言う:*"のTextView TransformationMethodsを使ってパスワードの文字をドットで置き換えるか、改行文字が1行のテキストフィールドに改行を起こさないようにします。 "* – pskink