2017-02-03 193 views
0

如果在我的剪贴板中保存了许多字符串,如:s1,s2,s3,...,s1是保存的最后一个项目。我想粘贴s2。我用这个代码粘贴S1:从android剪贴板管理器粘贴

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)并没有奏效。

请帮me.Thanks很多

日志:

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

哪个Android版本你试试检查剪贴板中的项目数? –

+0

没有工作意味着错误?或错误的结果? – imudin07

+0

代码中'item2'的类型是什么?你在哪里分配它? –

回答

0

无效指标1,大小为1,在java.util.ArrayList中....

这意味着您的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"); 
}