在Android中,ClipData有时是空的

时间:2016-07-19 20:58:37

标签: clipboardmanager

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

中得到错误

错误讯息:

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

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

这是我的一段代码:

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);
                                    }
                                }
                            }
                        }
                    });
                }

1 个答案:

答案 0 :(得分:1)

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

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

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

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