TextWatcher - s和et.getText()。toString()之间的区别

时间:2014-06-13 00:13:45

标签: android android-edittext textwatcher

我将textwatcher附加到edittext。关注此网站http://developer.android.com/reference/android/text/TextWatcher.html我有一个非常小的问题。 s和edittext.getText()。toString()之间有什么区别?它们不是都指的是目前在edditext上写的文本吗?非常感谢

4 个答案:

答案 0 :(得分:2)

基本上是的,但是CharSequenceString的不同之处在于它们可能附加了Spans(字体,颜色和& c)。

它与getText()返回的实例完全相同。

答案 1 :(得分:1)

CharSequence s
每次您从edittext edittext.getText()更改中输入字符时,

实际为s,而edittext.getText()也是如此。 .toString()正在做的是将CharSequence转换为String

总结s == edittext.getText()

答案 2 :(得分:1)

在使用中是一回事,但在使用s时性能更好,因为

s = EditText.getText()

因此,如果使用EditText.getText()。toString(),则执行相同的函数两次。

答案 3 :(得分:1)

  

sedittext.getText().toString()之间的区别是什么?

我认为你的意思是sonTextChangedbeforeTextChanged中的参数相同。

  

他们俩都没有提到当前写在edditext上的文字?

基本上是的,这是对的。

由于Android是开源的,我们可以在源代码中看到它。 getText()方法:

public CharSequence getText() {
    return mText;
}

我们可以在setText()方法中看到this

mText = text;

后跟this

sendOnTextChanged(text, 0, oldlen, textLength);

正如您所看到的那样text作为参数传递给sendOnTextChanged(一种通知TextWatcher中每个附加EditText变更的方法)是相同的作为mText中返回的实例变量getText()

所以EditText#getText()onTextChangedbeforeTextChanged中的s参数是相同的。但是他们返回CharSequence。在您上面调用toString()后,您将其转换为String