setText 的 edittext 导致 addTextChangedListener 崩溃

发布于 2024-09-24 11:33:23 字数 447 浏览 4 评论 0原文

我试图从我正在制作的 Android 应用程序上的 edittext 文本框中删除所有非标准字母字符。我成功创建了一个侦听器,获取值并通过正则表达式删除错误的字符。但是,下面的 .setText 行会导致应用程序崩溃。有人知道如何解决这个问题并动态屏蔽某些字符吗?

filenameTextBox.addTextChangedListener(new TextWatcher() { 

    public void onTextChanged(CharSequence s, int start, int before, int count) {

        FILENAME=s.toString();
        FILENAME = FILENAME.replaceAll("[^a-zA-Z]", "");
        filenameTextBox.setText(FILENAME);
   }
}

Im trying to strip all non standard letter characters from an edittext textbox on an android app im making. I am successfully creating a listener, obtaining the value and removing bad chrs via a regex. however, the .setText line below causes the app to crash. Anyone got any ideas how to get around this and dynamically mask certain chrs?

filenameTextBox.addTextChangedListener(new TextWatcher() { 

    public void onTextChanged(CharSequence s, int start, int before, int count) {

        FILENAME=s.toString();
        FILENAME = FILENAME.replaceAll("[^a-zA-Z]", "");
        filenameTextBox.setText(FILENAME);
   }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

千紇 2024-10-01 11:33:23

如果我清楚地理解你的问题,希望这个片段能帮助你

        public void afterTextChanged(Editable editable)
        {
            if (editable.length() != 0)
            {
                chatTextArea.removeTextChangedListener(this);
                chatTextArea.setText("your text");
                chatTextArea.addTextChangedListener(this);
            }
        }

Hope this snippet will help you if i understand your problem clearly

        public void afterTextChanged(Editable editable)
        {
            if (editable.length() != 0)
            {
                chatTextArea.removeTextChangedListener(this);
                chatTextArea.setText("your text");
                chatTextArea.addTextChangedListener(this);
            }
        }
傲性难收 2024-10-01 11:33:23

你不是在创建一个无限循环吗?您可以记录每次调用处理程序的时间并查看它被调用的次数。

Aren't you creating an infinite loop? You can log each time the handler is called and see how many times it's called.

找回味觉 2024-10-01 11:33:23
public void onTextChanged(CharSequence s, int start, int before, int count)
    {
        chatTextArea.removeTextChangedListener(this);
        String s_new = s.toString().replaceAll("[^0-9]", ""); // for example, if need
        chatTextArea.setText(s_new);
        chatTextArea.setSelection(start + count + s_new.length() - s.length());
        chatTextArea.addTextChangedListener(this);
    }
public void onTextChanged(CharSequence s, int start, int before, int count)
    {
        chatTextArea.removeTextChangedListener(this);
        String s_new = s.toString().replaceAll("[^0-9]", ""); // for example, if need
        chatTextArea.setText(s_new);
        chatTextArea.setSelection(start + count + s_new.length() - s.length());
        chatTextArea.addTextChangedListener(this);
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文