Search code examples
javaandroidstringclipboardspannablestring

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


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.


Solution

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