Android – EditText donne IndexOutOfBounds Exception lors de l'utilisation de TextAllCaps

J'essaie de créer une page d'inscription très simple en utilisant une mise en page relative. Cette page d'inscription est liée à un fragment appelé RegistrationFragment.

J'ai cinq champs EditText pour cette mise en page: nom, numéro de téléphone, courrier électronique, mot de passe et confirmation du mot de passe. Pour une raison quelconque, je peux entrer du texte dans le mot de passe et confirmer le mot de passe, mais chaque fois que j'essaie d'entrer un texte dans les autres champs, ils bloquent immédiatement l'application avec une exception IndexOutOfBounds.

  • Impossible d'exécuter dex: plusieurs fichiers dex définissent Lcom / google / android / gms / analytics / internal / Command
  • ResValue gradle error: Type non pris en charge "String" dans "generated.xml"
  • Comment masquer les images de la galerie Android
  • Comment puis-je récupérer à partir d'un Parcel a CharSequence qui a été enregistré à l'aide de TextUtils.writeToParcel (...)?
  • Comment enregistrer le fichier depuis le site Web vers une carte SD
  • Comment détecter si la langue est l'anglais (toutes les variantes) sur Android?
  • Voici la trace complète de la pile:

    java.lang.IndexOutOfBoundsException at android.graphics.Paint.getTextRunAdvances(Paint.java:1879) at android.text.TextLine.handleText(TextLine.java:747) at android.text.TextLine.handleRun(TextLine.java:898) at android.text.TextLine.measureRun(TextLine.java:414) at android.text.TextLine.measure(TextLine.java:293) at android.text.TextLine.metrics(TextLine.java:267) at android.text.Layout.getLineExtent(Layout.java:998) at android.text.Layout.drawText(Layout.java:329) at android.widget.Editor.drawHardwareAccelerated(Editor.java:1380) at android.widget.Editor.onDraw(Editor.java:1303) at android.widget.TextView.onDraw(TextView.java:5163) at android.view.View.draw(View.java:14465) at android.view.View.getDisplayList(View.java:13362) at android.view.View.getDisplayList(View.java:13404) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3077) at android.view.View.getDisplayList(View.java:13300) at android.view.View.getDisplayList(View.java:13404) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3077) at android.view.View.getDisplayList(View.java:13300) at android.view.View.getDisplayList(View.java:13404) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3077) at android.view.View.getDisplayList(View.java:13300) at android.view.View.getDisplayList(View.java:13404) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3077) at android.view.View.getDisplayList(View.java:13300) at android.view.View.getDisplayList(View.java:13404) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3077) at android.view.View.getDisplayList(View.java:13300) at android.view.View.getDisplayList(View.java:13404) at android.view.HardwareRenderer$GlRenderer.buildDisplayList(HardwareRenderer.java:1570) at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:1449) at android.view.ViewRootImpl.draw(ViewRootImpl.java:2377) at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2249) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1879) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:996) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5600) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761) at android.view.Choreographer.doCallbacks(Choreographer.java:574) at android.view.Choreographer.doFrame(Choreographer.java:544) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747) at android.os.Handler.handleCallback(Handler.java:733) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5001) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) at dalvik.system.NativeStart.main(Native Method) 

    Mon fichier de mise en page xml:

     <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#e5e5e5"> <TextView android:id="@+id/fragment_registration_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="@dimen/activity_vertical_margin" android:layout_marginTop="@dimen/activity_vertical_margin" android:layout_marginRight="@dimen/activity_horizontal_margin" android:layout_marginLeft="@dimen/activity_horizontal_margin" android:text="@string/registration_title" android:textAllCaps="true" android:textSize="35sp" android:layout_centerHorizontal="true" android:textColor="@color/blue" /> <RelativeLayout android:id="@+id/fragment_registration_edit_text_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="30dp" android:layout_marginRight="30dp" android:layout_below="@id/fragment_registration_title" android:layout_centerHorizontal="true"> <EditText android:id="@+id/fragment_registration_legal_name" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:hint="@string/full_name_prompt" android:maxLines="1" android:textAllCaps="true" android:background="@drawable/edit_text_top_rounded" /> <EditText android:id="@+id/fragment_registration_cell_phone" android:layout_below="@id/fragment_registration_legal_name" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:hint="@string/cell_phone_prompt" android:maxLines="1" android:textAllCaps="true" android:background="@drawable/edit_text_white" /> <EditText android:id="@+id/fragment_registration_email" android:layout_below="@id/fragment_registration_cell_phone" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:hint="@string/email_prompt" android:maxLines="1" android:textAllCaps="true" android:background="@drawable/edit_text_white" /> <EditText android:id="@+id/fragment_registration_password" android:layout_below="@id/fragment_registration_email" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:hint="@string/confirm_password_prompt" android:maxLines="1" android:background="@drawable/edit_text_bottom_rounded" /> </RelativeLayout> <Button android:id="@+id/fragment_registration_button" android:background="@drawable/button_registration" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/registration_button" android:textColor="#ffffff" android:layout_below="@+id/fragment_registration_edit_text_layout" android:layout_marginTop="5dp" android:layout_marginLeft="30dp" android:layout_marginRight="30dp" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" /> </RelativeLayout> 

    Le cas échéant, je "regarde" mon code Fragment en utilisant ce qui suit, qui se trouve à la fin de la méthode onCreate () de mon activité principale à des fins de test. J'ai eu les mêmes erreurs lorsque j'ai essayé de tester l'inscription en tant qu'activité.

     RegistrationFragment test = new RegistrationFragment(); setContentView(R.layout.fragment_registration); 

  • Comment résoudre l'erreur: "!!! TRANSACTION DE LIAISON FAILÉE !!! "In android 4.4
  • Comment utiliser l'appareil photo ou l'API Camera2 de Android pour prendre en charge les anciennes et les nouvelles versions de l'API sans notes de dépréciation?
  • Comment faire apparaître une vue Android en mode défilege lorsque le clavier apparaît?
  • Comment faire une vue d'image circulaire complète dans Android
  • Comment vérifier la base de données sur un périphérique Android non enraciné
  • Correction des erreurs Eclipse lors de l'utilisation d'Android NDK et std :: vector
  • 3 Solutions collect form web for “Android – EditText donne IndexOutOfBounds Exception lors de l'utilisation de TextAllCaps”

    D'accord, je sais qu'il est en retard … mais cela peut aider d'autres personnes à l'avenir …

    J'ai eu le même problème avec textAllCaps pour EditText dans ma demande.

    J'ai trouvé que textAllCaps est une propriété uniquement pour TextView . Vous ne pouvez pas utiliser cette propriété pour EditText .

    Donc, je l'ai cherché et trouvé une meilleure solution pour cela.

    Plutôt que d'utiliser textAllCaps nous pouvons utiliser android:inputType="textCapCharacters" .

    Par exemple

      <EditText android:id="@+id/edittext1" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:inputType="textCapCharacters" android:hint="@string/first_name" android:padding="10dp" > </EditText> 

    Si nous utilisons android:inputType="textCapCharacters" il convertira tous les caractères en UPPER CASE, comme nous le voulons dans textAllCaps .

    PS Si vous utilisez la touche Maj et tapez le texte, il peut convertir le texte en minuscules. Vous pouvez toujours utiliser la méthode toUpper() dans l'objet string pour la convertir en majuscule. Cela peut aider …

    Ok, le problème est que textAllCaps ne fonctionne pas pour les contrôles EditText . Cela fonctionne uniquement pour les commandes qui ne sont pas modifiables (comme TextView ). Selon la documentation sur setAllCaps() (qui est le code derrière la version du textAllCaps ):

    Ce paramètre sera ignoré si ce champ est éditable ou sélectionnable

    Donc, ça ne fonctionnera pas.

    Maintenant, même si je ne sais pas pourquoi votre code s'est écrasé, il ne devrait pas l'être, il devrait juste être ignoré, mais peut-être, le problème se produit lorsque textAllCaps est défini à partir du fichier xml … Je n'étais pas sûr, mais je J'ai simplement suggéré ce que j'aurais changé le premier et j'espérais que ça fonctionnerait …

    De toute façon, je suis content d'avoir aidé …

    Je n'ai pas assez de réputation pour faire un commentaire, mais j'ai eu une exception d'exécution similaire (et crash) lors de l'utilisation d'un TextView et textAllCaps défini sur true .

    Lorsque j'ai supprimé ce paramètre, tout a fonctionné comme prévu. Il semble donc que les conseils donnés ci-dessus peuvent également s'appliquer à TextView dans certains cas.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.