从任何浏览器页面复制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
。
如何摆脱这个错误?
任何帮助表示赞赏。
答案 0 :(得分:31)
返回一个字符串,其字符与此序列中的字符顺序相同。
您需要使用下一个代码。
String pasteData = item.getText().toString();
由于android.text.SpannableString
返回item.getText()
,您无法转发CharSequence
,it
答案 1 :(得分:16)
SpannableString不是直接的String。所以,你不能施展。但是,它可以转换为字符串。你可以将一些东西转换为字符串,并与空字符串连接。
pasteData = "" + item.getText();
答案 2 :(得分:0)
如果您的跨区文字仅包含HTML内容,则可以使用Html.toHtml()
String htmlString = Html.toHtml(spannedText);
答案 3 :(得分:0)
它对我有用
String htmlString = String.valueOf(Html.fromHtml(contenttext,Html.FROM_HTML_MODE_COMPACT));
答案 4 :(得分:0)
这是Kotlin
中对我有用的东西:
val str = text.toString()
答案 5 :(得分:0)
你想像这样在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" />