【问题标题】:Paste from android clipboard manager从 android 剪贴板管理器粘贴
【发布时间】:2017-02-03 18:04:47
【问题描述】:

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

【问题讨论】:

  • 你在哪个安卓版本上试用过?
  • 不工作意味着错误?还是错误的结果?
  • 你的代码中item2的类型是什么?你在哪里分配它?
  • @ShreyashSSarnayak android 4.1 api 16
  • @imudin07 错误和崩溃的应用程序

标签: android clipboardmanager


【解决方案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");
}

【讨论】:

    猜你喜欢
    • 2013-10-11
    • 1970-01-01
    • 2017-09-16
    • 1970-01-01
    • 2016-01-30
    • 2017-12-23
    • 2015-07-29
    • 2013-07-08
    相关资源
    最近更新 更多