2014-12-15 18 views
7

Podczas kopiowania String z dowolnej strony przeglądarki, pasteData działa poprawnie. Jednak podczas kopiowania SpannedString z wiadomości wysłanej edytorze punkcie (pola), awarii aplikacji i pokazuje ten komunikat o błędzie:Dlaczego wyświetlać java.lang.ClassCastException: android.text.SpannableString nie można przesłać do java.lang.String?

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

Mój kod:

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

gdzie instancja ClipboardManager zdefiniowany jako clipBoard poniżej :

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

Wszystko, co próbuję zrobić, to użyć pasteData w String format. Jak pozbyć się tego błędu? Każda pomoc jest doceniana.

Odpowiedz

11

SpannableString nie jest bezpośrednio ciągiem. więc nie możesz rzucić. ale można go przekonwertować na ciąg. możesz konwertować coś na ciąg, łącząc się z pustym łańcuchem.

pasteData = "" + item.getText(); 
+0

kodowej tylko odpowiedź nie jest zalecane, ponieważ może to mylić OP i przyszłych czytelników. Zamiast tego wyjaśnij, co robi kod. –

+12

Jest to obejście i nie rozwiązuje problemu głównego. Problem polega na tym, że item.getText() zwraca CharSequence, a nie String. OP powinien użyć item.getText(). ToString(), aby przekonwertować CharSequence na ciąg –

1

Jeśli łączony tylko tekst zawierający treść HTML potem można przekonwertować go za pomocą Html.toHtml()

String htmlString = Html.toHtml(spannedText); 
21

Od CharSequence.toString()

Zwraca łańcuch z samych znaków w takiej samej kolejności jak w ta sekwencja.

Musisz użyć następnego kodu.

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

Nie można rzutować na android.text.SpannableString ponieważ item.getText() zwrotów CharSequence, istnieje wiele wdrożeń it

+0

Klejnot odpowiedzi. Brzmi banalnie, ale oszczędza dużo bólu głowy. Dziękuję Ci ! – user2582651