TextWatcher StringBuilder append 方法将 CharSequence 追加到两个 Stri



我正在尝试将EditText视图的显示值替换为字符,同时将原始输入保留在另一个StringBuilder对象中。

代码如下:

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

第一个输入的字符在 Toast 中显示为输入的原始字符,但第二个字符会向其添加*。因此,如果我输入a它会显示a,如果我输入aa,它会显示aa*aaa它是aa*a**等等。

如何将这些对象与同时追加的对象分开?代码应该附加到stringBuilderHiddenPassword,但很明显这不是这种方法的工作方式。

通过在原始字符串上使用replace方法找到了解决方案:

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

最新更新