1

我知道如何使用 toString() 从 TextView 获取字符串,但我想了解为什么如果我通过括号将 TextView 的文本转换为字符串,它会导致 Android 在运行时崩溃?

例如“String text = (String)((TextView)findViewById(R.id.myTextViewId)).getText();"

4

3 回答 3

5

这是因为getText()返回CharSequence(您可以转换为SpannableEditable在某些情况下)您不能string直接转换为。

使用toString()使您可以转换为string类。

来自android开发者文档:

公共 CharSequence getText ()

返回 TextView 正在显示的文本。如果使用 BufferType.SPANNABLE 或 BufferType.EDITABLE 的参数调用 setText(),则可以将此方法的返回值分别转换为 Spannable 或 Editable。注意:返回值的内容不要修改。如果你想要一个可修改的,你应该先制作自己的副本。

来源:http: //developer.android.com/reference/android/widget/TextView.html

于 2013-10-24T11:49:04.307 回答
1

当您使用“toString()”时,您实际上是在进行转换。您正在调用对象的 toString() 方法,该方法了解对象是什么以及如何将其转换为“有意义”的字符串。

当您使用“(字符串)”语法时,您使用的是没有转换的强制转换。它只是说获取对象,并且根本没有任何更改,将其视为字符串。由于对象不是字符串,因此调用不适用于对象实际内容的方法时可能会出错。

于 2013-10-24T11:54:12.920 回答
0

尝试这个...

 String text = ((TextView)findViewById(R.id.myTextViewId)).getText().toString();

因为 getText() 返回 CharSequence 对象

于 2013-10-24T11:52:07.807 回答