web-dev-qa-db-ja.com

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を使用することだけです。このエラーを取り除く方法は?どんな助けでもありがたいです。

18
user4356416

SpannableStringは直接Stringではありません。なので、キャストできません。ただし、文字列に変換できます。空の文字列と連結して何かを文字列に変換できます。

pasteData = "" + item.getText();
17
Adem

From CharSequence.toString() から

このシーケンスと同じ順序で同じ文字を含む文字列を返します。

次のコードを使用する必要があります。

_String pasteData = item.getText().toString();
_

item.getText()CharSequenceを返すため、_Android.text.SpannableString_にキャストできません。 it の実装は多数あります

32
gio

スパンドテキストにHTMLコンテンツのみが含まれる場合、Html.toHtml()を使用して変換できます。

String htmlString = Html.toHtml(spannedText);
1
SilentKiller

それは私のために働いていますString htmlString = String.valueOf(Html.fromHtml(contenttext,Html.FROM_HTML_MODE_COMPACT));

0
Manju S B