如果在我的剪贴板中保存了许多字符串,例如:s1,s2,s3,...,则s1是保存的最后一项。我想粘贴s2。我使用此代码粘贴s1:
myClipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
ClipData abc = myClipboard.getPrimaryClip();
ClipData.Item item1 = abc.getItemAt(0);
ClipData.Item item2 = abc.getItemAt(1);
String text = item2.getText().toString();
textview.setText(text);
我也使用abc.getItemAt(1)
而没有工作。
请帮助我。谢谢
日志:
E/InputEventReceiver: Exception dispatching input event.
E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
E/MessageQueue-JNI: java.lang.IndexOutOfBoundsException:
Invalid index 1, size is 1 at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251) at java.util.ArrayList.get(ArrayList.java:304) at android.content.ClipData.getItemAt(ClipData.java:790)
答案 0 :(得分:0)
索引1无效,java.util.ArrayList的大小为1 ....
这意味着Clipboard
中只有一项(大小为1)。因此,在索引1处获取项目将引发异常。
请检查将数据复制到剪贴板的方式。出于某种原因,您的剪贴板只有一个项目。
阻止异常发生的一件事是使用abc.getItemCount()
检查剪贴板中的项目数
if (abc.getItemCount() > 1) {
ClipData.Item item2 = abc.getItemAt(1);
String text = item2.getText().toString();
textview.setText(text);
} else {
textview.setText("Only one item present in clipboard");
}