只要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,它可能会阻止键盘由于未绑定到编辑器而导致输入连接错误。