我正在尝试创建一个允许自动转换文本的应用程序,当用户在没有onclick动作的情况下在keyborad中写一些内容我希望从editext
获取文本并在转换后同时设置它,我试图使用TextWatcher
但不起作用。
这是我的代码:
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 :(得分:0)
你应该打断无休止的递归!
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());
答案 1 :(得分:0)
我认为问题在于这一行:
converted = transliterator.transliterate(text.getText().toString());
text.setText(converted);
您应该使用该方法的text
并将分配转换为CharSequence s
视图,而不是输入值text
。
希望这能解决您的问题。