2017-02-03 198 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"); 
}