3 votes

Exception d'état illégal lors d'un double clic sur un texte d'édition

Bonjour, je reçois une exception d'état illégal lorsque je double-clique sur un EditText, voici la trace de la pile.

06-30 11:18:24.970: ERROR/AndroidRuntime(3011): java.lang.IllegalStateException: ActionBarContextView can only be used with android:layout_width="match_parent" (or fill_parent)
06-30 11:18:24.970: ERROR/AndroidRuntime(3011):     at com.android.internal.widget.ActionBarContextView.onMeasure(ActionBarContextView.java:257)
06-30 11:18:24.970: ERROR/AndroidRuntime(3011):     at android.view.View.measure(View.java:10828)
06-30 11:18:24.970: ERROR/AndroidRuntime(3011):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4351)
06-30 11:18:24.970: ERROR/AndroidRuntime(3011):     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1284)
06-30 11:18:24.970: ERROR/AndroidRuntime(3011):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:613)
06-30 11:18:24.970: ERROR/AndroidRuntime(3011):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:519)
06-30 11:18:24.970: ERROR/AndroidRuntime(3011):     at android.view.View.measure(View.java:10828)
06-30 11:18:24.970: ERROR/AndroidRuntime(3011):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4351)
06-30 11:18:24.970: ERROR/AndroidRuntime(3011):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:267)
06-30 11:18:24.970: ERROR/AndroidRuntime(3011):     at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:1890)
06-30 11:18:24.970: ERROR/AndroidRuntime(3011):     at android.view.View.measure(View.java:10828)
06-30 11:18:24.970: ERROR/AndroidRuntime(3011):     at android.view.ViewRoot.performTraversals(ViewRoot.java:884)
06-30 11:18:24.970: ERROR/AndroidRuntime(3011):     at android.view.ViewRoot.handleMessage(ViewRoot.java:2003)
06-30 11:18:24.970: ERROR/AndroidRuntime(3011):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-30 11:18:24.970: ERROR/AndroidRuntime(3011):     at android.os.Looper.loop(Looper.java:132)
06-30 11:18:24.970: ERROR/AndroidRuntime(3011):     at android.app.ActivityThread.main(ActivityThread.java:4025)
06-30 11:18:24.970: ERROR/AndroidRuntime(3011):     at java.lang.reflect.Method.invokeNative(Native Method)
06-30 11:18:24.970: ERROR/AndroidRuntime(3011):     at java.lang.reflect.Method.invoke(Method.java:491)
06-30 11:18:24.970: ERROR/AndroidRuntime(3011):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
06-30 11:18:24.970: ERROR/AndroidRuntime(3011):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
06-30 11:18:24.970: ERROR/AndroidRuntime(3011):     at dalvik.system.NativeStart.main(Native Method)

3voto

Reed Yang Points 31

Essayez de vérifier la solution fournie ici :

http://code.google.com/p/Android/issues/detail?id=19021

EDITAR:

La solution proposée est la suivante :

Changez :

<style name="MyDialogTheme">
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowFrame">@null</item>
    <item name="android:backgroundDimEnabled">false</item>
</style>

A ceci :

<style name="MyDialogTheme" parent="@android:style/Theme.Dialog">
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowFrame">@null</item>
    <item name="android:backgroundDimEnabled">false</item>

0voto

Thomas Owers Points 829

Si vous lisez la première ligne, il est écrit ActionBarContextView can only be used with android:layout_width="match_parent" (or fill_parent) . En d'autres termes, quelque chose dans votre mise en page a une invalidité android:layout_width . Vérifiez que...

0voto

Atheh Points 165

Je pense que le problème vient de la mise en page que vous avez implémentée.

Je suppose que vous avez donné une taille à votre actionBarContextView et que ce n'est pas possible. Vous devez choisir fill_parent ou match_parent pour cet article.

0voto

user5737901 Points 1

Les résultats de l'exemple suivant sont :

  • désactiver le menu contextuel (double clic, etc.),
  • et empêcher le crash du dialogue sur l'événement de l'entrée.

    editText.setCustomSelectionActionModeCallback(new EditTextNoContextHelper());

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X