【发布时间】:2017-12-10 19:48:46
【问题描述】:
我正在尝试用字符替换 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,但很明显这不是这个方法的工作原理。
【问题讨论】:
标签: java android append stringbuilder