webentwicklung-frage-antwort-db.com.de

Android - SPAN_EXCLUSIVE_EXCLUSIVE-Felder dürfen keine Länge von Null haben

Ich habe folgendes Layout (praktisch leer):

<?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>

Die Aktivitätsklasse enthält Folgendes:

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

Wenn ich dies auf meinem mobilen Gerät ausführen, erhalte ich die folgende Fehlermeldung:

SpannableStringBuilder
SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length

Ich habe dies mit und ohne TextView ausprobiert und der Fehler bleibt immer noch, ich muss etwas grundlegend falsch machen, um ein solches Grundlayout zu verursachen. 

Hat jemand eine Idee, wie ich das laden kann, ohne den Fehler?

169
DMac

Ich habe die gleichen Fehlereinträge in LogCat ausgeführt. In meinem Fall liegt es an der von mir verwendeten Drittanbieter-Tastatur. Wenn ich es wieder auf Android-Tastatur umstelle, wird der Fehlereintrag nicht mehr angezeigt.

223
Jack

Da der Fehler, den Sie erhalten, nicht mit einer EditText zusammenhängt, ist es nicht mit Ihrer Tastatur.

Die Fehler, die Sie erhalten, sind kein Ergebnis Ihres Codes. Sie testen wahrscheinlich auf einem Samsung-Gerät, das über Samsung TouchWiz verfügt.

Ich hatte die gleichen Fehler, dann testete ich auf einem Nexus S (auch von Samsung, aber reines Android-Betriebssystem ohne TouchWiz) und habe diesen Fehler nicht erhalten.

Ignorieren Sie in Ihrem Fall diese Fehler beim Testen auf einem Gerät! :)

107
Karim

Wenn Sie Ihren Code betrachten, bin ich nicht sicher, warum Sie diesen Fehler erhalten. Ich hatte jedoch denselben Fehler, jedoch mit EditText-Feldern.

Das Ändern von Android:inputType="text" (oder einer der anderen inputType-Textvariationen) in Android:inputType="textNoSuggestions" (oder beispielsweise Android:inputType="textEmailAddress|textNoSuggestions") hat es für mich behoben. 

Sie können dies auch in Code mit etwas festlegen 

mInputField.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);

Sieht aus, als würde Android standardmäßig annehmen, dass EditText-Felder Vorschläge enthalten. Wenn dies nicht der Fall ist, werden Fehler angezeigt. Nicht zu 100% überzeugt von dieser Erklärung, aber die oben genannten Änderungen haben es für mich behoben.

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

Hoffe das hilft!

40
tim

Auf Ihrem Android-Handy gehen Sie zu:
Einstellungen -> Anwendungsmanager -> Alle -> Samsung-Tastatur und klicken Sie dann auf "Cache leeren"
(alle von dieser Anwendung gesammelten Daten löschen).

14
Celebes

Versuchen Sie es mit der Standard-Android-Tastatur. Diese verschwindet 

11
Yasin Hassanien

Vergewissern Sie sich, dass Sie einen Wert in Ihrer MainAcitivity für die folgenden Methoden onCreateOptionsMenu und onCreate übergeben haben

In einigen Fällen löscht der Entwickler die Anweisung "return super.onCreateOptionsMenu (menu)" und ändert sich in "return true".

4
Masood Moshref

Das hat für mich funktioniert ... auf jedem Gerät

    <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"
        />

In Java-Code:

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;
        }
    });
2
Rahul Nehul

Um zu versuchen, diesen Fehler zu debuggen, gehen Sie zuerst zu Ihrem Android-Terminal/Ihrer Android-Konsole und führen Sie den folgenden Befehl aus:

ps | grep THE_ERROR_PID_YOU_GET_(IT_IS_A_NUMBER)

wenn die Ausgabe dann als App ausgegeben wird, ist es Ihre App, die den Fehler verursacht. Suchen Sie nach leeren Strings, die Sie in layout übergeben.

Ich hatte genau das gleiche Problem und es war mein Fehler, als ich ein leeres String in mein Layout übergab. Nach dem Ändern von "" in " " ist dieser Fehler behoben.

Wenn Sie Ihre App nicht über die Konsolenausgabe abrufen, verursacht sie eine andere Ursache (wahrscheinlich, wie andere bereits sagten, die Android-Tastatur).

1
dazito

Masood Moshref hat Recht, dieser Fehler tritt auf, weil das Optionsmenü von Menu nicht gut vorbereitet ist, da in der onCreate () -Methode "return super.onCreateOptionsMenu (menu)" fehlt.

1
hqgoldswan

Ich hatte dieselbe Warnung und stellte fest, dass durch das Entfernen einer nicht verwendeten @id die Warnung gelöscht wurde. Für mich war es offensichtlich, dass die @ -ID mit einer wachsenden Liste von TextViews verknüpft war, die mit einer Datenbank verknüpft waren. Daher wurde für jeden Eintrag eine Warnung angezeigt.

1
k.e.n.

Ich hatte das gleiche Problem, dann habe ich es mit folgendem Code behoben!

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

In meinem Fall haben die EditText-Felder mit inputType als text/textCapCharacters diesen Fehler verdeckt. Ich bemerkte dies in meinem Logcat, wenn ich den in eines dieser Felder eingegebenen Text mit der Rücktaste vollständig entfernte.

Die Lösung, die für mich funktionierte, war, den inputType dieser Felder in textNoSuggestions zu ändern, da dies der am besten geeignete Typ war und mir keine unerwünschten Fehler mehr bescherte.

0
Ankush Chauhan

Ich habe das gleiche Problem gesehen. Ich habe fast ein paar Wochen verschwendet, um dieses Problem zu lösen ... Endlich hatte ich Zweifel an mir und versuchte, ein anderes Projekt durch Kopieren und Einfügen von Startdateien wie SplashScreen & LoginScreen zu erstellen.

Aber mit dem gleichen Code bekam ich SPAN_EXCLUSIVE_EXCLUSIVE.

Dann habe ich den Handler-Code aus dem Startbildschirm entfernt und es erneut versucht und Wow funktioniert. Ich bekomme nicht SPAN_EXCLUSIVE_EXCLUSIVE in logcat

Ich frage mich, warum das so ist. Bis dahin bekam keine andere Lösung, aber durch Entfernen des Handlers vom Startbildschirm funktioniert es.

Versuchen Sie es hier und aktualisieren Sie es, wenn es behoben ist oder nicht.

0
Sachin Shelke

Überprüfen Sie, ob auf dem Bildschirm, auf den dies trifft, Elemente (z. B. eine Schaltfläche oder Textansicht) doppelt vorhanden sind (zweimal kopiert). Ich habe das unbemerkt gemacht und musste mich dem gleichen Thema stellen.

0

Ich stieß auch auf dieses Problem, als ich Text aus dem Internet kopierte. Meine Lösung ist, den Text abzuschneiden/zu entfernen, bevor weitere Bearbeitungen vorgenommen werden. 

0
codingpuss

versuchen Sie, die Verwendung von view in XML-Design zu vermeiden. Ich hatte das gleiche Problem, aber als ich die Ansicht entfernte. Es hat perfekt funktioniert.

wie Beispiel:

             <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" />

Überprüfen Sie auch, ob Änderungen durch Ausprobieren durchgeführt werden sollen. Android: inputType = "number" to Android: inputType = "text" oder besser nicht verwenden, wenn dies nicht erforderlich ist. Manchmal steckt die Tastatur in einigen Fällen fest die Geräte.

0
Eshan Chattaraj

dieser Fehler tritt auch aufgrund einer geänderten API-URL auf. Versuchen Sie es mit der URL, die Sie im Postman verwenden, und c, wenn sie ordnungsgemäß funktioniert

0
Aditya Dabas

Ich hatte das gleiche Problem, aber mit einer ListView ... Ich habe es gelöst, weil ich eine falsche R.id.listView verwendete, die Listenansicht brauchte einen Wert. In meinem Fall waren es Strings, die ich auf ListView2 gespeichert habe. Der richtige Code war also R.id.listView2

0
Andrea