204

我有以下布局(实际上是空的):

<?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 并且错误仍然存​​在,我必须做一些根本错误的事情才能导致这种基本布局。

有没有人知道我如何才能在没有错误的情况下加载它?

4

21 回答 21

248

我在 LogCat 中遇到了相同的错误条目。就我而言,这是由我正在使用的第 3 方键盘引起的。当我将其更改回 Android 键盘时,错误条目不再显示。

于 2012-12-21T07:48:49.367 回答
118

因为您收到的错误与 无关EditText所以它与您的键盘无关

您遇到的错误不是您的代码造成的;您可能正在具有三星 TouchWiz 的三星设备上进行测试。

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

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

于 2013-05-06T12:00:06.637 回答
55

查看您的代码,我不确定您为什么会收到该错误,但我遇到了同样的错误,但使用了 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

希望这可以帮助!

于 2012-12-04T04:26:19.200 回答
14

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

于 2013-08-12T19:37:42.053 回答
11

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

于 2013-01-16T11:26:03.920 回答
4

明确您在 MainAcitivity 中为以下方法 onCreateOptionsMenu 和 onCreate 传递了一个值

在某些情况下,开发者将“return super.onCreateOptionsMenu(menu)”语句删除,改为“return true”。

于 2013-08-14T10:41:40.250 回答
3

这对我有用......在每台设备上

    <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;
        }
    });
于 2018-07-22T14:19:48.930 回答
1

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

ps | grep THE_ERROR_PID_YOU_GET_(IT_IS_A_NUMBER)

那么如果输出作为您的应用程序出现......这是您的应用程序导致错误。尝试寻找Strings您传递到layout.

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

如果您没有从控制台输出中获取您的应用程序,那么是其他原因导致它(可能,正如其他人所说,android 键盘)

于 2014-07-08T15:02:25.920 回答
1

我有同样的警告,发现删除未使用的@id 消除了警告。对我来说很明显,@id 与越来越多的链接到数据库的 textView 列表相关联,因此每个条目都有一个警告。

于 2013-04-15T18:27:04.707 回答
1

Masood Moshref 是对的,出现这个错误是因为在 onCreate() 方法中缺少“return super.onCreateOptionsMenu(menu)”,Menu 的选项菜单没有做好准备。

于 2014-02-02T16:36:46.340 回答
0

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

于 2014-01-10T20:11:10.723 回答
0

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

但是使用相同的代码,我仍然得到SPAN_EXCLUSIVE_EXCLUSIVE

然后我从初始屏幕中删除了处理程序代码并再次尝试并哇它的工作。我在logcat中没有收到SPAN_EXCLUSIVE_EXCLUSIVE问题。

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

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

于 2013-07-10T10:28:06.077 回答
0

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

于 2015-03-29T01:09:08.413 回答
0

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

于 2014-09-24T16:46:50.347 回答
0
**DONT PUT SET TEXT IN TEXT WATCHER**etSearch.addTextChangedListener(object : TextWatcher {
        override fun afterTextChanged(s: Editable) {
            visibleResultList = false
            if (s.toString().length != 0) {
                getSearchSuggetion(no_of_rec, 0, s.toString())
            } else {
               // etSearch.setText("")
            }
            Log.e("text_change","============"+s.toString())
        }
        override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}
        override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
        }
    })
于 2021-09-15T10:58:11.290 回答
0

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

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

于 2019-08-24T17:00:57.847 回答
0

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

  text = (EditText)findViewById(R.id.TextVoiceeditText); 
  text.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
于 2016-09-24T07:42:21.477 回答
0

尝试避免在 xml 设计中使用视图。我也有同样的问题,但是当我删除了视图时它工作得很好。

例如:

             <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="number"更改为android:inputType="text"或如果不需要,最好不要使用它。有时键盘卡住并在某些设备中出错。

于 2018-06-06T13:16:36.017 回答
0

就我而言,我单击手机上最近的应用程序快捷方式并关闭所有应用程序。这个解决方案总是对我有用,因为这个错误与代码无关。

于 2020-11-05T21:41:25.373 回答
0

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

于 2018-04-28T10:09:41.507 回答
-4

要解决此问题,只需在您的AndroidManifest.xml文件中添加android:usesCleartextTraffic="true" ,该文件位于..\app\src\main\AndroidManifest.xml中,如下所示...

在此处输入图像描述

于 2021-06-21T08:10:15.953 回答