2017-02-03 5 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

Какой андроид версии вы попробовать его? –

+0

не работает означает ошибку? или неправильный результат? – imudin07

+0

Каков тип 'item2' в вашем коде? и где вы его назначаете? –

ответ

0

Недопустимый индекс 1, размер 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"); 
}