当前位置: 首页 > 知识库问答 >
问题:

on文本更改与后文本在Android中更改 - 需要实时示例

张德佑
2023-03-14

我在读关于Android编程中的TextWatcher的文章。我无法理解afterTextChange()onTextChanged()之间的区别。

虽然我提到了TextWatcher的onTextChanged、beforeTextChanged和postTextChanged之间的差异,但我仍然无法想到需要使用onTextChanged()而不是postTextChanged()的情况。

共有3个答案

皇甫福
2023-03-14

这是解释:

onTextChanged:这意味着当你开始输入时,就像你想写“运动”一样,它会调用每个字符,就像当你按下“s”然后再按“p”然后按“o”等等时,它会调用…

afterTextChanged:这将在您停止键入时调用,它将在您完全写入“sport”后调用,这是主要区别。

YOUR_EDIT_TEXT.addTextChangedListener(new TextWatcher() {

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

                    //Your query to fetch Data
                    }

                    @Override
                    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

                    }

                    @Override
                    public void afterTextChanged(Editable s) {
                        if (s.length() > 0) {

                            //Your query to fetch Data
                        }
                    }
                });
鲍建业
2023-03-14

只是在评论里补充一下Pratik Dasa的回答和与@SimpleGuy的讨论,因为我没有足够的名声来评论。

这三个方法也由EditText.setText("your string here")触发。这将使长度为16(在本例中),因此count并不总是1

请注意,这三种方法的参数列表不相同:

abstract void afterTextChanged(Editable s)
abstract void beforeTextChanged(CharSequence s, int start, int count, int after)
abstract void onTextChanged(CharSequence s, int start, int before, int count)

这就是afterTextChangedonTextChanged:parameters之间的区别所在。

也请看看这个线程中接受的答案: Android文本观察器.后文本更改 vs 文本观察器.on文本已更改

祝宏放
2023-03-14

我在Android Dev Portal上找到了对此的解释

http://developer.android.com/reference/android/text/TextWatcher.html

**abstract void afterTextChanged(Editable s)**
This method is called to notify you that, somewhere within s, the text has been changed.

**abstract void beforeTextChanged(CharSequence s, int start, int count, int after)**
This method is called to notify you that, within s, the count characters beginning at start are about to be replaced by new text with length after.

**abstract void onTextChanged(CharSequence s, int start, int before, int count)**
This method is called to notify you that, within s, the count characters beginning at start have just replaced old text that had length before.

所以,两者的区别是:

    < li >我可以使用< code>afterTextChanged更改我的文本,而< code>onTextChanged不允许我这样做 < li>onTextChanged给出了更改内容的偏移量,而afterTextChanged则没有
 类似资料:
  • 问题内容: 这是功课。入门Java类。仍然把我的头缠在这东西上。 该项目是要建立一个库存管理系统。 除了如何使此按钮更改JTextField中的文本外,我已经弄清楚了一切。它需要从产品阵列(在本例中为DVD)中添加信息。这本书讨论了管理诸如JTextField的字体,位置和状态之类的不同方法,但是没有涉及格式化或调用文本的方法。 这是我要使用JTextArea进行操作的示例。从本质上讲,这就是我想

  • 我必须取编辑文本的值并将其除以1.21....错误在哪里 错误:

  • 在我的Android项目中,我必须将TextChangedListener(TextWatcher)添加到编辑文本视图中。它有三个部分: < Li > < code > ontext changed() < Li > < code > beforeTextChanged() < Li > < code > afterTextChanged() 这三个有什么区别?我必须在键侦听器上实现一个表搜索,对

  • 问题内容: 我似乎无法在我尝试制作的Mac应用程序中更改文本标签。我正在迅速。这是我正在使用的代码: 这些似乎都不起作用,这是我需要完成的唯一问题。PS当我写sumlab.text时,它说NSTextField没有名为text的成员 问题答案: NSTextField与UITextField不同。它没有属性。但是,它确实继承自具有字符串值属性的NSControl。

  • 问题内容: 我需要在键入时替换EditText内的文本:示例:如果用户按下“ A”,它将被存储到缓冲区中,而在EditText上显示“ D”(看起来就像他按下“ D”)。现在,我可以读取按下的字符,但是在et中不能显示任何字符,以避免stackoverflow: 问题答案: 您可以根据需要更改它:

  • 问题内容: 我创建了一个扩展JDialog的类,其中有一些复选框和3个按钮:接受,取消和全选。 当用户单击全选时,应选中每个复选框,如果再次单击,则应取消选中每个复选框。效果很好,但我还希望按钮的文本在“全选”和“全选”之间切换。我在这里遇到了麻烦,因此当用户单击按钮并将文本更改为“取消全选”时,该按钮消失了。 我在这里将类简化为最简单的形式: 我看不出有什么问题。有什么帮助吗? 问题答案: 该按