为什么显示java.lang.ClassCastException:android.text.SpannableString不能转换为java.lang.String?
从任何浏览器页面复制为什么显示java.lang.ClassCastException:android.text.SpannableString不能转换为java.lang.String?,java,android,string,clipboard,spannablestring,Java,Android,String,Clipboard,Spannablestring,从任何浏览器页面复制字符串时,粘贴数据工作正常。 但是,当从message sent item editor(字段)复制SpandString时,应用程序崩溃并显示此错误消息: java.lang.ClassCastException: android.text.SpannableString cannot be cast to java.lang.String 我的代码: // since the clipboard contains plain text. ClipData.Item it
字符串
时,粘贴数据
工作正常。
但是,当从message sent item editor(字段)复制SpandString
时,应用程序崩溃并显示此错误消息:
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();
其中剪贴板管理器
实例定义为剪贴板
,如下所示:
clipBoard = (ClipboardManager) context.getSystemService(context.CLIPBOARD_SERVICE);
clipBoard.addPrimaryClipChangedListener(new ClipboardListener());
我所要做的就是以String
格式使用pasteddata
。
如何消除这个错误?
感谢您的帮助。spann请勿直接使用字符串。所以,你不能投。但是,它可以转换为字符串。您可以使用空字符串连接将某些内容转换为字符串
pasteData = "" + item.getText();
如果跨距文本仅包含HTML内容,则可以使用
HTML.toHtml()
从
返回一个字符串,该字符串的字符顺序与此序列中的字符顺序相同
您需要使用下一个代码
String pasteData = item.getText().toString();
您不能强制转换到android.text.SpannableString,因为item.getText()
返回CharSequence
,有很多实现它对我有效
String htmlString=String.valueOf(Html.fromHtml(contenttext,Html.FROM_Html_MODE_COMPACT));
这就是我在科特林的工作:
val str = text.toString()
您想在xml文件的Textview中添加如下属性 添加此->android:bufferType=“spannable” 例如:
<TextView
android:id="@+id/self_assessment_intro2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:bufferType="spannable"
android:text="@string/self_assessment_intro2"
android:textSize="@dimen/self_assessment_intro_text_size" />
code-only答案不鼓励使用,因为它可能会混淆OP和未来的读者。相反,请解释代码的作用。这是一种变通方法,不能解决根本问题。问题是item.getText()返回的是字符序列,而不是字符串。OP应该使用item.getText().toString()将答案的CharSequence转换为StringGem。听起来很琐碎,但省去了很多头痛。非常感谢。
<TextView
android:id="@+id/self_assessment_intro2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:bufferType="spannable"
android:text="@string/self_assessment_intro2"
android:textSize="@dimen/self_assessment_intro_text_size" />