2

我在 Android 中遇到了一个奇怪的“问题”或者可能是一个“错误”。我经常将 ClipboardManager 用于我的应用程序。但是如果我在几秒钟内使用它两次,我总是会得到一个 NullPointerException。我认为我在访问剪贴板时尚未填充剪贴板,但这似乎是一个非常愚蠢的想法......有没有人遇到过同样的问题,或者我做错了什么?我在 String text = item.getText().toString(); 得到错误

错误信息:

java.lang.NullPointerException:尝试在 at.co.netconsulting.leotranslater.SettingsActivity$1$3.onPrimaryClipChanged 的​​空对象引用上调用接口方法“java.lang.String java.lang.CharSequence.toString()”

感谢您提前提供的每一个提示或帮助!

这是我的一段代码:

final ClipboardManager myClipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
                    myClipboard.addPrimaryClipChangedListener(new ClipboardManager.OnPrimaryClipChangedListener() {
                        @Override
                        public void onPrimaryClipChanged() {
                            ClipData cp = myClipboard.getPrimaryClip();
                            if(cp.getItemCount()>0) {
                                ClipData.Item item = cp.getItemAt(0);
                                if (item == null) {
                                    Toast.makeText(getApplicationContext(), "Item is null", Toast.LENGTH_LONG).show();
                                } else {
                                    if(item!=null) {
                                        String text = item.getText().toString();
                                        Toast.makeText(getApplicationContext(), "Sie suchen nach dem Wort: " + text, Toast.LENGTH_LONG).show();
                                        Intent msgIntent = new Intent(SettingsActivity.this, ServiceTranslator.class);
                                        msgIntent.putExtra("ClipBoardData", text);
                                        startService(msgIntent);
                                    }
                                }
                            }
                        }
                    });
                }
4

1 回答 1

1

我认为这可能是解决方案。

String text = item.coerceToText(getBaseContext()).toString();

查看文档,据说如果您想要的只是剪切数据的文本表示,您可以使用便捷方法 {@link Item#coerceToText Item.coerceToText}。

我希望这能解决我的问题!

于 2016-07-19T21:16:59.420 回答