0

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

1 回答 1

0

索引 1 无效,java.util.ArrayList 的大小为 1....

这意味着您的Clipboard(尺寸为 1)中只有 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");
}
于 2017-02-03T19:11:25.897 回答