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.
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();
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
If your Spanned text only containing HTML content then you can convert it using Html.toHtml()
String htmlString = Html.toHtml(spannedText);
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