我正在尝试在EditText字段中为输入文本添加一些字符,但方法append()不起作用。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.temp, container, false);
button = (Button)rootView.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Dialog dialog = new Dialog(getActivity());
dialog.setContentView(R.layout.enter_sms_dialog);
dialog.setTitle(Html.fromHtml("<font color='#000000'>Phone number verification</font>"));
edSmsCode = (EditText) dialog.findViewById(R.id.edSmsCode);
edSmsCode.addTextChangedListener(new TextWatcher() {
int len = 0;
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
String str = edSmsCode.getText().toString();
len = str.length();
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}
@Override
public void afterTextChanged(Editable s) {
String str = edSmsCode.getText().toString();
if (str.length() == 3 && len < str.length()) {
edSmsCode.append("-");
}
}
});
dialog.show();
}
});
return rootView;
}
但是当我在Fragment的根视图中将此代码用于EditText时,此方法可行。这是一个错误吗?
答案 0 :(得分:0)
尝试在afterTextChanged()方法中用(EditText)getCurrentFocus()替换edSmsCode(获取被聚焦的视图,在本例中为editText)。
public void afterTextChanged(Editable s) {
EditText editText = (EditText)getCurrentFocus();
String str = editText.getText().toString();
if (str.length() == 3 && len < str.length()) {
editText.append("-");
}
}
来源:https://stackoverflow.com/a/5951792/5837758
如果这不能解决问题,你可以尝试将edSmsCode设置为final,根据这个答案:https://stackoverflow.com/a/27094374/5837758