【问题标题】:SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length error whenever an editText becomes empty每当 editText 变为空时,SPAN_EXCLUSIVE_EXCLUSIVE 跨度不能有零长度错误
【发布时间】:2013-01-19 19:59:14
【问题描述】:

测试设备: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();

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

【问题讨论】:

    标签: java android


    【解决方案1】:

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

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

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

    【讨论】:

    • 我尝试了您的建议,但仍然产生错误消息。即使将整行注释掉,logcat 仍然显示相同的错误。
    • 仅使用默认键盘会发生这种情况,还是其他键盘也会发生这种情况?这开始听起来像一个默认的键盘错误。在这种情况下,答案可能是接受日志消息。
    • 默认键盘和 Swiftkey 3 都会发生这种情况。更多的谷歌搜索让我发现了这一点:support.swiftkey.net/forums/116693-2-swiftkey-bugs-/suggestions/… 我找不到任何与默认键盘类似的错误报告。
    【解决方案2】:

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

    android:inputType="textNoSuggestions"
    

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

    【讨论】:

    • Android 文档似乎暗示这会关闭自动完成功能。我的问题是如何在保留自动完成功能的同时修复错误。
    猜你喜欢
    • 2013-03-28
    • 2012-12-20
    • 2012-11-09
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-21
    相关资源
    最近更新 更多