Illegal State exception on double clicking a edittext

只谈情不闲聊 提交于 2019-12-20 01:41:03

问题


Hi I am getting an illegal state exception on double clicking a EditText .Here is the stack trace.pls help

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)

回答1:


Try checking the solution provided here:

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

EDIT:

The solution suggests the following:

Change:

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

To this:

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




回答2:


If you read the first line it says ActionBarContextView can only be used with android:layout_width="match_parent" (or fill_parent). In other words, something in your layout has a invalid android:layout_width. Check that...




回答3:


I think the problem comes from the layout you implemented.

I guess you gave a size for your actionBarContextView and this is not possible. You have to choose fill_parent or match_parent for this item.




回答4:


In results of next example are:

  • disable context menu (double click etc.),
  • and prevent crash on dialog on input's event.


editText.setCustomSelectionActionModeCallback(new EditTextNoContextHelper());

public class EditTextNoContextHelper implements ActionMode.Callback { public boolean onCreateActionMode(ActionMode mode, Menu menu) { return false; } public boolean onPrepareActionMode(ActionMode mode, Menu menu) { return false; } public boolean onActionItemClicked(ActionMode mode, MenuItem item) { return false; } public void onDestroyActionMode(ActionMode mode) { } }



来源:https://stackoverflow.com/questions/6530474/illegal-state-exception-on-double-clicking-a-edittext

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!