从Android剪贴板管理器粘贴

时间:2017-02-03 18:04:48

标签: android clipboardmanager

如果在我的剪贴板中保存了许多字符串,例如: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)

1 个答案:

答案 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");
}