Android – SPAN_EXCLUSIVE_EXCLUSIVE reeksen mogen geen lengte nul hebben

Ik heb de volgende lay-out (vrijwel leeg):

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

De klasse Activiteit bevat het volgende:

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

Als ik dit op mijn mobiele apparaat uitvoer, krijg ik de volgende foutmelding:

SpannableStringBuilder
SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length

Ik heb dit geprobeerd met en zonder de TextView en de fout blijft bestaan, ik moet iets fundamenteel verkeerd doen voordat een dergelijke basislay-out dit kan veroorzaken.

Heeft iemand enig idee hoe ik dit kan laden zonder de fout?


Antwoord 1, autoriteit 100%

Ik ben dezelfde foutvermeldingen tegengekomen in LogCat. In mijn geval wordt het veroorzaakt door het toetsenbord van een derde partij dat ik gebruik. Wanneer ik het terug verander naar het Android-toetsenbord, wordt de fout niet meer weergegeven.


Antwoord 2, autoriteit 48%

Omdat de fout die je krijgt nietgerelateerd is aan een EditText, is het nietgerelateerd aan je toetsenbord.

De fouten die u krijgt, zijn niet het gevolg van uw code; u bent waarschijnlijk aan het testen op een Samsung-apparaat met Samsung TouchWiz.

Ik had dezelfde fouten, daarna heb ik getest op een Nexus S (ook van Samsung, maar puur Android OS zonder TouchWiz) en kreeg deze fout niet.

In uw geval negeert u deze fouten dus gewoon tijdens het testen op een apparaat! 🙂


Antwoord 3, autoriteit 21%

Als ik naar je code kijk, weet ik niet zeker waarom je die fout krijgt, maar ik had dezelfde fout maar met EditText-velden.

android:inputType="text"(of een van de andere inputType-tekstvariaties) wijzigen in android:inputType="textNoSuggestions"(of android:inputType="textEmailAddress|textNoSuggestions", bijvoorbeeld) heeft het voor mij opgelost.

Je kunt dit ook in Code instellen met iets als

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

Het lijkt erop dat Android er standaard van uitgaat dat EditText-velden suggesties bevatten. Als ze dat niet doen, maakt het fouten. Ik heb niet 100% vertrouwen in die uitleg, maar de bovengenoemde wijzigingen hebben het voor mij opgelost.

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

Hopelijk helpt dit!


Antwoord 4, autoriteit 6%

Ga op je Android-telefoon naar:
instellingen -> applicatiebeheerder -> alle -> Samsung-toetsenbord en klik vervolgens op “cache wissen”
(verwijder alle gegevens die door deze applicatie zijn verzameld).


Antwoord 5, autoriteit 4%

Probeer het standaard Android-toetsenbord te gebruiken, het zal verdwijnen


Antwoord 6, autoriteit 2%

Maak duidelijk dat je een waarde hebt doorgegeven in je MainAcitivity voor de volgende methoden onCreateOptionsMenu en onCreate

In sommige gevallen verwijdert de ontwikkelaar de instructie “return super.onCreateOptionsMenu(menu)” en verandert deze in “return true”.


Antwoord 7

Dit werkte voor mij…op elk apparaat

   <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;
        }
    });

Antwoord 8

Ik had dezelfde waarschuwing en ontdekte dat het verwijderen van een ongebruikte @id de waarschuwing deed verdwijnen. Voor mij was het duidelijk omdat de @id werd geassocieerd met een groeiende lijst met textViews die aan een database waren gekoppeld, dus er was een waarschuwing voor elk item.


Antwoord 9

Masood Moshref heeft gelijk, deze fout treedt op omdat het optiemenu van Menu niet goed is voorbereid door het ontbreken van “return super.onCreateOptionsMenu(menu)” in de onCreate() methode.


Antwoord 10

Om te proberen deze fout te debuggen, gaat u eerst naar uw Android-terminal/console en voert u deze opdracht uit:

ps | grep THE_ERROR_PID_YOU_GET_(IT_IS_A_NUMBER)

Als de uitvoer dan uw app is… is het uw app die de fout veroorzaakt. Probeer te zoeken naar lege Stringsdie u doorgeeft aan de layout.

Ik had exact hetzelfde probleem en het was mijn fout omdat ik een lege Stringdoorgaf aan mijn lay-out. Na het wijzigen van de ""in " "is deze fout verdwenen.

Als u uw app niet uit de console-uitvoer haalt, wordt dit veroorzaakt door iets anders (waarschijnlijk, zoals anderen al zeiden, het Android-toetsenbord)


Antwoord 11

Ik heb hetzelfde probleem ondervonden. Ik heb bijna een paar weken verspild om dit probleem op te lossen.
Uiteindelijk twijfelde ik aan mezelf en probeerde een ander project te maken door enkele opstartbestanden zoals SplashScreen & te kopiëren en te plakken. LoginScreen.

Maar met dezelfde code kreeg ik nog steeds SPAN_EXCLUSIVE_EXCLUSIVE.

Vervolgens heb ik de handlercode van het opstartscherm verwijderd en opnieuw geprobeerd en Wow, het werkt.
Ik krijg geen probleem SPAN_EXCLUSIVE_EXCLUSIVEin logcat.

Ik vraag me af waarom dat zo is? totdat de tijd geen andere oplossing kreeg, maar door de handler van het opstartscherm te verwijderen, werkt het.

Probeer hier te updaten of het is opgelost of niet.


Antwoord 12

Controleer of u een element zoals een knop of tekstweergave hebt gedupliceerd (tweemaal gekopieerd) in het scherm waar dit voorkomt. Ik deed dit ongemerkt en kreeg met hetzelfde probleem te maken.


Antwoord 13

Ik kwam dit probleem ook tegen toen ik wat tekst van internet kopieerde. Mijn oplossing is om de tekst in te korten/opmaak te verwijderen voordat ik verder ga met verwerken.


Antwoord 14

Ik had hetzelfde probleem, maar met een listView…. ik heb het opgelost omdat ik een verkeerde R.id.listView gebruikte, die lijstweergave moest een waarde hebben, in mijn geval waren het strings die ik op listView2 had opgeslagen … dus de juiste code was R.id.listView2


Antwoord 15

Ik had hetzelfde probleem en toen heb ik het opgelost door de code te volgen!

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

Antwoord 16

deze fout treedt ook op vanwege een gewijzigde API-URL. probeer de URL te raken die u in postman gebruikt en c als het goed werkt.
het opnieuw controleren van de API’s loste mijn probleem op


Antwoord 17

probeer het gebruik van viewin XML-ontwerp te vermijden. Ook ik had hetzelfde probleem, maar toen ik de weergave verwijderde. het werkte perfect.

zoals voorbeeld:

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

Controleer en probeer ook te wijzigen op proef en fout Android: Inputtype = “Nummer” To Android: InputType = “Tekst” of beter niet gebruiken, indien niet vereist. Soms stak het toetsenbord en krijgt een fout in sommige van de apparaten.


Antwoord 18

In mijn geval, de Editxt-velden met InputType als Tekst / TextCapCharacters waren deze fout behuizing. Ik heb dit in mijn logcat opgemerkt wanneer ik backspace gebruikte om de in een van deze velden getypte tekst volledig te verwijderen.

De oplossing die voor mij werkte, was om het ingang van die velden te wijzigen naar textnosuggesties , want dit was het meest geschikte type en gaf me geen ongewenste fouten meer.


Antwoord 19

In mijn geval klik ik op recente apps-snelkoppeling op mijn mobiele telefoon en sluit alle apps. Deze oplossing werkt altijd voor mij, omdat deze fout niet gerelateerd is aan code.


Antwoord 20

Om dit probleem op te lossen, voegt u Android toe: GebruikteClearTextTraffic = “True” In uw AndroidManifest.xml -bestand dat is op .. \ APP \ SRC \ MAIN \ Androidmanifest.xml Net als BELOW …

Other episodes