TextView.getText().toString()与TextView.toString()的区别及优劣疑问
TextView.getText().toString()是获取文本的正确方式,而TextView.toString()不是? 嘿,这个问题问到点子上了!很多刚上手Android开发的同学都容易搞混这两个方法,我来给你讲明白其中的门道:
TextView.toString()完全不是用来获取显示文本的
这个方法是继承自View类的toString(),它的作用是返回当前View的调试信息,比如控件的类型、ID、布局参数,还有文本内容的一小段预览(注意是预览,不是完整内容)。举个实际例子:如果你的TextView显示的是“今天要写100行代码!”,调用toString()可能会返回类似这样的内容:TextView{abc123 V.ED..C.. ... #1234567 app:id/tv_content text='今天要写100行...' ...}
你看,文本被截断了,而且整个字符串里混了一堆控件的其他属性,完全没法直接拿来当业务文本用。getText().toString()才是官方推荐的正确姿势getText()是TextView专门提供的获取文本内容的方法,它返回的是CharSequence类型的对象(因为TextView支持富文本,比如带颜色、下划线的文本),调用toString()就能把它转换成普通的字符串,得到的就是你在界面上看到的完整、准确的文本内容。还是刚才的例子,调用这个方法会直接返回“今天要写100行代码!”,完全符合我们的需求。
总结一下
TextView.toString()是错误的获取文本方式,它的设计目的根本不是获取显示内容;而getText().toString()不仅是官方推荐的标准用法,还能保证你拿到完整、可靠的文本,这也是为什么论坛里大家都用前者的原因。
内容的提问来源于stack exchange,提问作者Jagreet

