Android ICS spelling error correction causes PopupWindow to crash

久未见 提交于 2020-01-01 14:51:14

问题


In our application we have a custom popupwindow. It works perfect on 2.2 -> 4.0.3 no hitches. If you misspell a word in ICS in the edit text within the popupwindow and click on it to have android attempt to correct it, the application instantly crashes every time with this exception:

E/AndroidRuntime(13275): android.view.WindowManager$BadTokenException: Unable to add window -- token android.view.ViewRootImpl$W@42929b28 is not valid; is your activity running?
E/AndroidRuntime(13275):    at android.view.ViewRootImpl.setView(ViewRootImpl.java:515)
E/AndroidRuntime(13275):    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:279)
E/AndroidRuntime(13275):    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:193)
E/AndroidRuntime(13275):    at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:118)
E/AndroidRuntime(13275):    at android.view.Window$LocalWindowManager.addView(Window.java:537)
E/AndroidRuntime(13275):    at android.widget.PopupWindow.invokePopup(PopupWindow.java:988)
E/AndroidRuntime(13275):    at android.widget.PopupWindow.showAtLocation(PopupWindow.java:845)
E/AndroidRuntime(13275):    at android.widget.PopupWindow.showAtLocation(PopupWindow.java:809)
E/AndroidRuntime(13275):    at android.widget.TextView$PinnedPopupWindow.updatePosition(TextView.java:9517)
E/AndroidRuntime(13275):    at android.widget.TextView$PinnedPopupWindow.show(TextView.java:9474)
E/AndroidRuntime(13275):    at android.widget.TextView$SuggestionsPopupWindow.show(TextView.java:9718)
E/AndroidRuntime(13275):    at android.widget.TextView.showSuggestions(TextView.java:10010)
E/AndroidRuntime(13275):    at android.widget.TextView.onTouchEvent(TextView.java:8319)
E/AndroidRuntime(13275):    at android.view.View.dispatchTouchEvent(View.java:5486)
E/AndroidRuntime(13275):    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1959)
E/AndroidRuntime(13275):    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1728)
E/AndroidRuntime(13275):    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1959)
E/AndroidRuntime(13275):    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1728)
E/AndroidRuntime(13275):    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1959)
E/AndroidRuntime(13275):    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1728)
E/AndroidRuntime(13275):    at android.widget.PopupWindow$PopupViewContainer.dispatchTouchEvent(PopupWindow.java:1576)
E/AndroidRuntime(13275):    at android.view.View.dispatchPointerEvent(View.java:5662)
E/AndroidRuntime(13275):    at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:2863)
E/AndroidRuntime(13275):    at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
E/AndroidRuntime(13275):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(13275):    at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(13275):    at android.app.ActivityThread.main(ActivityThread.java:4340)
E/AndroidRuntime(13275):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(13275):    at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(13275):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
E/AndroidRuntime(13275):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
E/AndroidRuntime(13275):    at dalvik.system.NativeStart.main(Native Method)

This is the source file where the exception is being thrown from:

http://130.75.2.12/source/xref/android/4.0.3/frameworks-base/core/java/android/view/ViewRootImpl.java

and the line that invariably causes it:

res = sWindowSession.add(mWindow, mSeq, mWindowAttributes, getHostVisibility(), mAttachInfo.mContentInsets,mInputChannel);

Problem is sWindowSession is an interface for a service and I can't find the service's implementation? (http://130.75.2.12/source/xref/android/4.0.3/frameworks-base/core/java/android/view/IWindowSession.aidl)

Does anyone have any information on the service itself or the reason we're getting an exception here?

来源:https://stackoverflow.com/questions/10501984/android-ics-spelling-error-correction-causes-popupwindow-to-crash

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