为什么显示java.lang.ClassCastException:android.text.SpannableString不能被强制转换为java.lang.String?

从任何浏览器页面复制时, 工作正常。但是,从消息发送的项目编辑器(字段)复制时,应用程序崩溃并显示以下错误消息:StringpasteDataSpannedString

java.lang.ClassCastException: android.text.SpannableString cannot be cast to java.lang.String

我的代码:

// since the clipboard contains plain text.
ClipData.Item item = clipBoard.getPrimaryClip().getItemAt(0);

// Gets the clipboard as text.
String pasteData = new String();
pasteData = (String) item.getText();

其中,实例定义为 ,如下所示:ClipboardManagerclipBoard

clipBoard = (ClipboardManager) context.getSystemService(context.CLIPBOARD_SERVICE);
clipBoard.addPrimaryClipChangedListener(new ClipboardListener());

我所要做的就是以格式使用。如何摆脱此错误?任何帮助是值得赞赏的。pasteDataString


答案 1

CharSequence.toString()

返回一个字符串,其字符的顺序与此序列中的相同。

您需要使用下一个代码。

String pasteData = item.getText().toString();

你不能因为返回而强制转换为,它有很多实现android.text.SpannableStringitem.getText()CharSequence


答案 2

SpannableString不是直接的String。所以,你不能投掷。但是,它可以转换为字符串。您可以将某些内容转换为字符串,并用空字符串连接。

pasteData = "" + item.getText();