Android - SPAN_EXCLUSIVE_EXCLUSIVE跨度不能为零长度

DMa*_*Mac 182 java android

我有以下布局(几乎为空):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/set_layout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:contentDescription="content desc"
    android:orientation="vertical" >

    <TextView android:id="@+id/text"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="Hello, I am a TextView" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

Activity类包含以下内容:

public class TestActivity extends Activity {
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test);   
  }
}
Run Code Online (Sandbox Code Playgroud)

当我在移动设备上运行时,出现以下错误:

SpannableStringBuilder
SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
Run Code Online (Sandbox Code Playgroud)

我已经尝试过使用和不使用TextView并且错误仍然存​​在,我必须做一些根本错误的基本错误导致这种情况.

有没有人对如何在没有错误的情况下加载它有任何想法?

小智 230

我在LogCat中遇到了相同的错误条目.在我的情况下,它是由我使用的第三方键盘引起的.当我将其更改回Android键盘时,错误条目不再显示.

  • Google的键盘也会导致此错误. (7认同)
  • 不幸的是,上面@Rabi的链接不再好了.但是,谢谢你.我确实使用SwiftKey,它似乎仍然在2年后导致这个问题. (6认同)
  • 谢谢@Rabi,即使我切换到swiftkey并开始犯错误. (3认同)
  • Gboard(!) 也出现此问题(来自 Google) (3认同)
  • 在Nexus 7(2012版,运行4.3版)上使用股票Android键盘时出现错误 (2认同)

Kar*_*rim 111

因为你得到的错误是相关的EditText,那么它涉及到你的键盘.

您获得的错误不是您的代码的结果; 你可能正在测试三星设备上有三星的TouchWiz.

我有同样的错误,然后我测试了Nexus S(也是三星,但没有TouchWiz的纯Android操作系统),我没有得到这个错误.

因此,在您的情况下,只需在设备上进行测试时忽略这些错误!:)

  • 它是您的键盘,在您的情况下可能是 TouchWiz 的键盘。我在带有 Swiftkey 的 Nexus 4 上有同样的错误,如果我选择默认的 Android 键盘,错误就会消失。 (2认同)
  • 我同意Cookiki,错误是因为三星TouchWiz,并且它没有引起任何问题,除了在logcat中喷出错误.所以会忽略它们 (2认同)

tim*_*tim 43

看看你的代码,我不确定你为什么会收到这个错误,但我有同样的错误但是有EditText字段.

android:inputType="text"(或任何其他inputType文本变体)更改为android:inputType="textNoSuggestions"(或者android:inputType="textEmailAddress|textNoSuggestions",例如)为我修复它.

您也可以在代码中设置此类似的内容

mInputField.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
Run Code Online (Sandbox Code Playgroud)

默认情况下,Android假定EditText字段会有建议.如果他们不这样做,那就错了.对这个解释没有100%的信心,但上面提到的修改对我来说是固定的.

http://developer.android.com/reference/android/text/Spanned.html#SPAN_EXCLUSIVE_EXCLUSIVE

希望这可以帮助!

  • 不幸的是没有.虽然经过进一步调查,但错误似乎只显示在三星设备上. (2认同)

Cel*_*bes 14

在你的Android手机上,转到:
设置 - >应用程序管理器 - >全部 - >三星键盘,然后单击"清除缓存"
(删除此应用程序收集的所有数据).


Yas*_*ien 11

尝试使用默认的Android键盘它将消失

  • 默认的Android键盘也有问题(我在Nexus 5上有它) (4认同)