1

测试设备: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。但是,我希望保留自动完成功能,因为用户应该填写最有可能自动完成的单词。以下是用于创建对话框的代码:

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

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

4

2 回答 2

1

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

android:inputType="textNoSuggestions"

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

于 2013-04-04T04:06:15.983 回答
0

我以前从未见过那个特定的错误,但我的猜测是它导致它的这条线:

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

即使编辑框没有聚焦,也应该打开软键盘。因此输入连接设置不正确,导致键盘功能受限。首先设置焦点可能会有所帮助。所以可能在没有总是使用 LayoutParams.SOFT_INPUT_STATE_VISIBLE 的情况下 - 它可以防止键盘由于没有绑定到编辑器而出现错误的输入连接。

于 2013-02-05T00:56:54.383 回答