只要editText变空,SPAN_EXCLUSIVE_EXCLUSIVE跨度就不会出现零长度错误

测试设备:GSM galaxy nexus 4.2(使用内置键盘和swiftkey 3进行测试)

在我的应用程序中,我创建了一个对话框来提示用户输入。 该对话框显示一个EditText,用户应填写一个单词。在创建时,以及当用户从EditText中删除所有内容时,我在logcat中收到以下错误消息:

SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 

谷歌搜索以及在stackOverflow上搜索告诉我,通过使用类似的东西可以避免错误

 inputBox.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); 

其中inputBox是有问题的EditText。 但是,我希望保持自动完成function,因为用户应填写最有可能自动填充的单词。 以下是用于创建对话框的代码:

 AlertDialog.Builder builder = new AlertDialog.Builder(this); final EditText inputBox = new EditText(this); inputBox.setHint("New keyword"); builder.setTitle(R.string.add_keyword_dialogue_header) .setView(inputBox) .setPositiveButton("Add", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id { mListAdapter.addItem(inputBox.getText() .toString()); } }) .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { } }); final AlertDialog dialog = builder.create(); dialog.getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); dialog.show(); inputBox.requestFocus(); 

我的问题是,如何在保留自动完成function的同时防止错误发生?

只需将此属性添加到您的edittext中,您的问题肯定会得到解决

 android:inputType="textNoSuggestions" 

将上述属性添加到应用程序中使用的每个编辑文本中,或者只是在该编辑文本中仅出现错误的位置。

我之前从未见过那个特别的错误,但我的猜测是它导致它的这一行:

 dialog.getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); 

即使编辑框没有聚焦,也应该打开软键盘。 因此,未正确设置输入连接,使键盘function受限。 首先设置焦点可能会有所帮助。 因此,如果没有始终使用LayoutParams.SOFT_INPUT_STATE_VISIBLE,它可能会阻止键盘由于未绑定到编辑器而导致输入连接错误。