Почему показать java.lang.ClassCastException: android.text.SpannableString не может быть добавлено в java.lang.String?

При копировании String с любой страницы браузера pasteData работает правильно. Однако при копировании SpannedString из редактора отправленных сообщений (поля) приложение сбой и показывает это сообщение об ошибке:

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

где экземпляр ClipboardManager определяется как clipBoard, ниже:

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

Все, что я пытаюсь сделать, это использовать pasteData в формате String. Как избавиться от этой ошибки? Любая помощь приветствуется.

Ответ 1

SpannableString не является строкой напрямую. так что вы не можете бросить. но его можно преобразовать в строку. вы можете преобразовать что-то в строку с конкатенацией пустой строкой.

pasteData = "" + item.getText();

Ответ 2

Из CharSequence.toString()

Возвращает строку с теми же символами в том же порядке, что и в этой последовательности.

Вам нужно использовать следующий код.

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

Вы не можете использовать android.text.SpannableString, потому что item.getText() возвращает CharSequence, существует много реализаций it

Ответ 3

Если ваш Spanned текст содержит только HTML-контент, вы можете его преобразовать с помощью Html.toHtml()

String htmlString = Html.toHtml(spannedText);

Ответ 4

У меня это String htmlString = String.valueOf(Html.fromHtml(contenttext,Html.FROM_HTML_MODE_COMPACT));