Lors de la copie de String
à partir de n’importe quelle page de navigateur, pasteData
fonctionne correctement. Toutefois, lors de la copie de SpannedString
à partir d'un éditeur d'élément de message envoyé (champ), l'application se bloque et affiche le message d'erreur suivant:
Java.lang.ClassCastException: Android.text.SpannableString cannot be cast to Java.lang.String
Mon 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();
où l'instance ClipboardManager
définie par clipBoard
, ci-dessous:
clipBoard = (ClipboardManager) context.getSystemService(context.CLIPBOARD_SERVICE);
clipBoard.addPrimaryClipChangedListener(new ClipboardListener());
Tout ce que j'essaie de faire, c'est d'utiliser pasteData
au format String
. Comment se débarrasser de cette erreur? Toute aide est appréciée.
SpannableString n'est pas une chaîne directement. alors, vous ne pouvez pas lancer. mais, il peut être converti en chaîne. vous pouvez convertir quelque chose en chaîne avec concaténation avec chaîne vide.
pasteData = "" + item.getText();
Retourne une chaîne avec les mêmes caractères dans le même ordre que dans cette séquence.
Vous devez utiliser le code suivant.
String pasteData = item.getText().toString();
Vous ne pouvez pas transtyper en Android.text.SpannableString
car item.getText()
renvoie CharSequence
, il existe de nombreuses implémentations de it
Si votre texte fractionné contient uniquement du contenu HTML, vous pouvez le convertir à l'aide de Html.toHtml()
.
String htmlString = Html.toHtml(spannedText);