【发布时间】:2016-01-01 23:05:12
【问题描述】:
基本上,我的活动上有一个按钮,可以粘贴剪贴板中的文本。我的问题是,在对其进行测试后,如果剪贴板中没有可粘贴的内容,应用程序就会崩溃(例如,没有将任何内容复制到剪贴板)。如果剪贴板中有东西,粘贴功能就会起作用,所以我想知道如何处理它。我尝试处理这种崩溃,但它对我不起作用。
public void PasteText(View v)
{
TextView mainText = (TextView) findViewById(R.id.editext);
ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
ClipData cData = clipboard.getPrimaryClip();
ClipData.Item item;
String text = "";
if(cData.getItemCount() > 0)
{
item = cData.getItemAt(0);
text = (String) item.getText();
mainText.append(text);
return;
}
else
{
item = null;
mainText.append(text);
return;
}
}
Logcat:
01-01 15:07:56.860: E/AndroidRuntime(10567): java.lang.IllegalStateException: 无法执行活动的方法
01-01 15:07:56.860: E/AndroidRuntime(10567): at android.view.View$1.onClick(View.java:4025)
01-01 15:07:56.860:E/AndroidRuntime(10567):原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“int android.content.ClipData.getItemCount()”
01-01 15:07:56.860: E/AndroidRuntime(10567): at com.karimo.tester.MainForm.PasteText(MainForm.java:109)
01-01 15:07:56.860: E/AndroidRuntime(10567): ... 13 更多
【问题讨论】:
-
您应该发布崩溃中的堆栈跟踪,以便我们更好地帮助您帮助自己
-
ClipData.getItemCount()这会在您单击按钮时返回null。调试你的代码。 -
public String getTextFromClipboard(){ String text="";剪贴板管理器我的剪贴板; myClipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);剪辑数据剪辑数据=空; if (myClipboard != null) { clipData = myClipboard.getPrimaryClip(); if (clipData!=null&&clipData.getItemCount()>0){ ClipData.Item item = clipData.getItemAt(0);文本 = item.getText().toString(); } } 返回文本; }
标签: android copy-paste clipboardmanager