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

心已入冬 提交于 2019-12-18 14:43:11

问题


When copying String from any browser page, pasteData works properly. However when copying SpannedString from a message sent item editor(field), the application crashes and shows this error message:

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

My code:

// 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();

where the ClipboardManager instance defined as clipBoard, below:

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

All I'm trying to do is use pasteData in String format. How to get rid of this error? Any help is appreciated.


回答1:


SpannableString is not String directly. so, you can not cast. but, it can be converted to string. you can convert something to string with concatenating with empty string.

pasteData = "" + item.getText();



回答2:


From CharSequence.toString()

Returns a string with the same characters in the same order as in this sequence.

You need to use next code.

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

You can not cast to android.text.SpannableString because item.getText() returns CharSequence, there are a lot of implementations of it




回答3:


If your Spanned text only containing HTML content then you can convert it using Html.toHtml()

String htmlString = Html.toHtml(spannedText);



回答4:


It has worked for me String htmlString = String.valueOf(Html.fromHtml(contenttext,Html.FROM_HTML_MODE_COMPACT));



来源:https://stackoverflow.com/questions/27479181/why-show-java-lang-classcastexception-android-text-spannablestring-cannot-be-ca

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!