Android - SPAN_EXCLUSIVE_EXCLUSIVE跨度不能为零长度

时间:2012-12-02 14:49:25

标签: 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>

Activity类包含以下内容:

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

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

SpannableStringBuilder
SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length

我在使用和没有TextView的情况下尝试了这个并且错误仍然存​​在,我必须做一些根本错误的基本错误导致这种情况。

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

20 个答案:

答案 0 :(得分:226)

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

答案 1 :(得分:109)

因为您获得的错误 EditText相关,所以 与您的键盘相关。

您获得的错误不是您的代码的结果;你可能正在使用三星TouchWiz的三星设备上进行测试。

我有同样的错误,然后我在Nexus S(也是三星,但没有TouchWiz的纯Android操作系统)上测试过,我没有收到此错误。

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

答案 2 :(得分:40)

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

android:inputType="text"(或任何其他inputType文字变体)更改为android:inputType="textNoSuggestions"(或android:inputType="textEmailAddress|textNoSuggestions"),为我修复了它。

您也可以在代码中使用类似

的内容进行设置
mInputField.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);

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

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

希望这有帮助!

答案 3 :(得分:14)

在Android手机上,请转到:
设置 - &gt;应用程序管理器 - &gt;全部 - &gt;三星键盘然后点击“清除缓存”
(删除此应用程序收集的所有数据)。

答案 4 :(得分:11)

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

答案 5 :(得分:4)

明确表示您已在MainAcitivity中传递以下方法的值onCreateOptionsMenu和onCreate

在某些情况下,开发人员会删除“return super.onCreateOptionsMenu(menu)”语句并更改为“return true”。

答案 6 :(得分:2)

  

这对我有用...在所有设备上

    <EditText
        android:maxLines="1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textSize="15sp"
        android:layout_centerVertical="true"
        android:textColor="#000"
        android:id="@+id/input_search"
        android:background="@null"
        android:inputType="text"
        android:hint="Enter Address, City or Zip Code"
        android:imeOptions="actionSearch"
        />

在Java代码中:

mSearchText.setOnEditorActionListener(new TextView.OnEditorActionListener() {

        @Override
        public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) {
            if(actionId == EditorInfo.IME_ACTION_SEARCH
                    || actionId == EditorInfo.IME_ACTION_DONE
                    || keyEvent.getAction() == KeyEvent.ACTION_DOWN
                    || keyEvent.getAction() == KeyEvent.KEYCODE_ENTER){

                //execute our method for searching
            }

            return false;
        }
    });

答案 7 :(得分:1)

要尝试调试此错误,请首先转到Android终端/控制台并执行以下命令:

ps | grep THE_ERROR_PID_YOU_GET_(IT_IS_A_NUMBER)

然后如果输出作为您的应用程序出现......那么您的应用程序会导致错误。尝试查找您传递到Strings的空layout

我遇到了同样的问题,因为我将空String传递给我的布局,这是我的错。将""更改为" "后,此错误消失了。

如果你没有从控制台输出中获取你的应用程序,那么它就会引起它(可能正如其他人所说的那样,安卓键盘)

答案 8 :(得分:1)

Masood Moshref是对的,发生此错误是因为菜单的选项菜单没有通过缺少&#34;返回super.onCreateOptionsMenu(菜单)&#34;在onCreate()方法中。

答案 9 :(得分:1)

我有同样的警告,发现删除一个未使用的@id摆脱了警告。对我来说很明显,因为@id与一个不断增长的链接到数据库的textView列表相关联,所以每个条目都有一个警告。

答案 10 :(得分:0)

检查在遇到此问题的屏幕中是否有任何元素(如按钮或文本视图)重复(复制两次)。我没有注意到这一点,不得不面对同样的问题。

答案 11 :(得分:0)

我遇到了同样的问题。我几乎浪费了几周才解决了这个问题。 最后我对自己产生了疑问,并试图通过复制和粘贴一些启动文件来创建另一个项目,如SplashScreen&amp; LoginScreen。

但是使用相同的代码仍然是 SPAN_EXCLUSIVE_EXCLUSIVE

然后我从启动画面中删除了处理程序代码,然后再次尝试并哇其工作。 我没有在 logcat 中收到 SPAN_EXCLUSIVE_EXCLUSIVE 问题。

我想知道,为什么会这样?直到时间没有得到任何其他解决方案,但通过从启动屏幕删除处理程序,它正在工作。

如果已解决,请尝试并在此处更新。

答案 12 :(得分:0)

当我从互联网上复制一些文本时,我也遇到了这个问题。我的解决方案是在进行任何进一步处理之前修剪文本/删除格式。

答案 13 :(得分:0)

我有同样的问题,但有一个listView ....我解决了它因为我使用错误的R.id.listView列表View需要有一个值,在我的情况下它是我保存在listView2上的字符串...所以正确的代码是R.id.listView2

答案 14 :(得分:0)

我有同样的问题,然后通过以下代码修复它!

  text = (EditText)findViewById(R.id.TextVoiceeditText); 
  text.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);

答案 15 :(得分:0)

由于更改了API URL,也会发生此错误。尝试点击你在postman中使用的URL和c如果它正常工作。 重新检查API解决了我的问题

答案 16 :(得分:0)

尝试避免在xml设计中使用 view 。我也有相同的探测器,但是当我删除视图时。它工作得很好。

例如:

             <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"                   
                android:hint="Username"
                android:inputType="number"                   
                android:textColor="#fff" />

            <view
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="#f9d7db" />

还检查并尝试通过试验和错误更改 android:inputType =&#34; number&#34; 改为 android:inputType =&#34; text&#34; 或者如果不需要,最好不要使用它。有时键盘卡住并在某些设备中出错。

答案 17 :(得分:0)

在我的情况下,inputType为 text / textCapCharacters 的EditText字段用于解决此错误。每当我使用退格键完全删除在任何这些字段中键入的文本时,我都会在logcat中注意到这一点。

对我有用的解决方案是将这些字段的inputType更改为 textNoSuggestions ,因为这是最合适的类型,并且不再给我任何不必要的错误。

答案 18 :(得分:0)

就我而言,我单击手机上的最近应用程序快捷方式,然后关闭所有应用程序。此解决方案始终对我有用,因为此错误与代码无关。

答案 19 :(得分:0)

要解决此问题,只需在位于 ..\app\src\main 的 AndroidManifest.xml 文件中添加 android:usesCleartextTraffic="true" \AndroidManifest.xml 就像波纹管...

enter image description here