我知道如何使用 toString() 从 TextView 获取字符串,但我想了解为什么如果我通过括号将 TextView 的文本转换为字符串,它会导致 Android 在运行时崩溃?
例如“String text = (String)((TextView)findViewById(R.id.myTextViewId)).getText();"
这是因为getText()
返回CharSequence
(您可以转换为Spannable
或Editable
在某些情况下)您不能string
直接转换为。
使用toString()
使您可以转换为string
类。
来自android开发者文档:
公共 CharSequence getText ()
返回 TextView 正在显示的文本。如果使用 BufferType.SPANNABLE 或 BufferType.EDITABLE 的参数调用 setText(),则可以将此方法的返回值分别转换为 Spannable 或 Editable。注意:返回值的内容不要修改。如果你想要一个可修改的,你应该先制作自己的副本。
来源:http: //developer.android.com/reference/android/widget/TextView.html
当您使用“toString()”时,您实际上是在进行转换。您正在调用对象的 toString() 方法,该方法了解对象是什么以及如何将其转换为“有意义”的字符串。
当您使用“(字符串)”语法时,您使用的是没有转换的强制转换。它只是说获取对象,并且根本没有任何更改,将其视为字符串。由于对象不是字符串,因此调用不适用于对象实际内容的方法时可能会出错。
尝试这个...
String text = ((TextView)findViewById(R.id.myTextViewId)).getText().toString();
因为 getText() 返回 CharSequence 对象