在没有onclick

时间:2017-12-24 23:02:42

标签: android text android-edittext textwatcher

我正在尝试创建一个允许自动转换文本的应用程序,当用户在没有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) {

            }

        });

2 个答案:

答案 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

希望这能解决您的问题。