Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么显示java.lang.ClassCastException:android.text.SpannableString不能转换为java.lang.String?_Java_Android_String_Clipboard_Spannablestring - Fatal编程技术网

为什么显示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" />