我将textwatcher附加到edittext。关注此网站http://developer.android.com/reference/android/text/TextWatcher.html我有一个非常小的问题。 s和edittext.getText()。toString()之间有什么区别?它们不是都指的是目前在edditext上写的文本吗?非常感谢
答案 0 :(得分:2)
基本上是的,但是CharSequence
与String
的不同之处在于它们可能附加了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)
s
和edittext.getText().toString()
之间的区别是什么?
我认为你的意思是s
与onTextChanged
和beforeTextChanged
中的参数相同。
他们俩都没有提到当前写在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()
和onTextChanged
和beforeTextChanged
中的s参数是相同的。但是他们返回CharSequence
。在您上面调用toString()
后,您将其转换为String
。