ブラウザページから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
を使用することだけです。このエラーを取り除く方法は?どんな助けでもありがたいです。
SpannableStringは直接Stringではありません。なので、キャストできません。ただし、文字列に変換できます。空の文字列と連結して何かを文字列に変換できます。
pasteData = "" + item.getText();
From CharSequence.toString() から
このシーケンスと同じ順序で同じ文字を含む文字列を返します。
次のコードを使用する必要があります。
_String pasteData = item.getText().toString();
_
item.getText()
はCharSequence
を返すため、_Android.text.SpannableString
_にキャストできません。 it の実装は多数あります
スパンドテキストにHTMLコンテンツのみが含まれる場合、Html.toHtml()
を使用して変換できます。
String htmlString = Html.toHtml(spannedText);
それは私のために働いていますString htmlString = String.valueOf(Html.fromHtml(contenttext,Html.FROM_HTML_MODE_COMPACT));