我遇到了一个奇怪的问题"或者是一个" 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);
}
}
}
}
});
}
答案 0 :(得分:1)
我认为这可能是解决方案。
String text = item.coerceToText(getBaseContext()).toString();
查看文档,据说 如果你想要的只是剪辑数据的文本表示,那么你 *可以使用方便的方法{@link Item#coerceToText Item.coerceToText}。
我希望这能解决我的问题!