web-dev-qa-db-fra.com

Erreur: les plages SPAN_EXCLUSIVE_EXCLUSIVE ne peuvent pas avoir une longueur nulle

J'ai un problème avec mon application Android. J'ai un bouton et un événement associé, mais une erreur survient lorsque je clique pour la première fois. 

"les portées ne peuvent avoir une longueur nulle".

. Mais lorsque je clique pour la deuxième fois, l’événement onclick s’exécute bien. Regarde mon code Java:

public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final Button selectAltitude = (Button) findViewById(R.id.buttonAltitude1);
    final Button selectAltitude2 = (Button) findViewById(R.id.buttonAltitude2); 

    selectAltitude2.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view){

                String tempAlt = selectAltitude2.getText().toString();
                selectAltitude2.setText(selectAltitude.getText().toString());
                selectAltitude.setText(tempAlt);
        }
    });
    }

Le code XML avec les deux boutons (un avertissement déconseillé se produit):

 <?xml version="1.0" encoding="utf-8"?> 
<AbsoluteLayout
  xmlns:Android="http://schemas.Android.com/apk/res/Android" 
  Android:orientation="vertical" 
  Android:layout_width="fill_parent" 
  Android:layout_height="fill_parent"
  Android:background="@Android:color/black"> 

<Button
        Android:id="@+id/buttonAltitude1"
        style="?android:attr/buttonBarButtonStyle"
        Android:layout_width="39dp"
        Android:layout_height="42dp"
        Android:layout_marginLeft="250dp"
        Android:layout_x="257dp"
        Android:layout_y="419dp"
        Android:background="@drawable/drawable1"
        Android:focusableInTouchMode="true"
        Android:gravity="center_vertical"
        Android:includeFontPadding="false"
        Android:linksClickable="true"
        Android:minHeight="10dp"
        Android:minWidth="64dp"
        Android:paddingLeft="10dp"
        Android:paddingRight="5dp"
        Android:scrollHorizontally="true"
        Android:text="@string/button_meters"
        Android:textColor="@Android:color/black"
        Android:textSize="22sp"
        Android:textStyle="bold" />

        <Button
            Android:id="@+id/buttonAltitude2"
            style="?android:attr/buttonBarButtonStyle"
            Android:layout_width="65dp"
            Android:layout_height="42dp"
            Android:layout_marginLeft="250dp"
            Android:layout_x="295dp"
            Android:layout_y="419dp"
            Android:background="@drawable/drawable2"
            Android:clickable="true"
            Android:focusableInTouchMode="true"
            Android:gravity="center_vertical"
            Android:includeFontPadding="false"
            Android:linksClickable="true"
            Android:minHeight="10dp"
            Android:minWidth="64dp"
            Android:paddingLeft="15dp"
            Android:paddingRight="5dp"
            Android:scrollHorizontally="true"
            Android:text="@string/button_feet"
            Android:textColor="@Android:color/black"
            Android:textSize="25sp"
            Android:textStyle="bold" />

Lorsque je clique sur la première fois que Log cat interagit avec:

04-06 20: 01: 39.865: I/Capteurs (6946): sendDelay --- 200000000 04-06

20: 01: 39.865: D/SensorManager (6946): JNI - sendDelay 04-06

20: 01: 39.865: I/SensorManager (6946): définition du délai normal = vrai 04-06

20: 01: 39.890: E/SpannableStringBuilder (6946): SPAN_EXCLUSIVE_EXCLUSIVE

les portées ne peuvent avoir une longueur nulle 04-06 20: 01: 39.890:

E/SpannableStringBuilder (6946): les étendues SPAN_EXCLUSIVE_EXCLUSIVE ne peuvent pas

avoir une longueur nulle

pouvez-vous aider ne?;)

10
cpfp

J'ai rencontré les mêmes erreurs dans LogCat. Dans mon cas, cela est causé par le clavier tiers que j'utilise. Lorsque je rétablis le clavier Android, l'entrée d'erreur n'apparaît plus.

C’est la cause la plus probable de ce problème car il existe également un rapport de bogue pour SwiftKey: 

http://support.swiftkey.net/forums/116693-2-bug-reports/suggestions/2994580-span-exclusive-exclusive-spans-cannot-have-a-zero-

21
Ajay S

Pour essayer de déboguer cette erreur, allez d’abord sur votre terminal/console Android et exécutez cette commande:

ps | grep THE_ERROR_PID_YOU_GET_(IT_IS_A_NUMBER)

si la sortie apparaît comme votre application, c’est votre application qui cause l’erreur. Essayez de chercher Strings vide que vous passez dans la layout.

J'ai eu exactement ce même problème et c'était de ma faute car je passais un String vide dans ma mise en page. Après avoir changé le "" en " ", cette erreur a disparu.

Si vous n'obtenez pas votre application à partir de la sortie de la console, c'est quelque chose d'autre qui la cause (probablement, comme d'autres l'ont dit, le clavier Android).

0
dazito

Je sais que je suis un peu en retard. Si quelqu'un a encore besoin d'aide pour avoir cliquez sur la deuxième fois pour que l'événement onclick soit exécuté , j'ai supprimé ceci:

Android:focusableInTouchMode="true"

L'événement onClick fonctionnera désormais au premier clic.

0
Kim Montano