在没有onclick的情况下在edittext中设置文本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在没有onclick的情况下在edittext中设置文本相关的知识,希望对你有一定的参考价值。

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

            }

        });
答案

你应该打断无休止的递归!

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());
另一答案

我认为问题在于这一行:

converted = transliterator.transliterate(text.getText().toString());
text.setText(converted);

您应该使用该方法的text,并在转换为CharSequence s视图后,而不是从text输入值。

希望这能解决你的问题。

以上是关于在没有onclick的情况下在edittext中设置文本的主要内容,如果未能解决你的问题,请参考以下文章