WindowManager $ BadTokenException,在EditText中包含拼写错误的单词

时间:2015-11-10 12:15:58

标签: android android-edittext android-input-method android-windowmanager

在定义EditText时,我对inputType text的{​​{1}}有疑问,如下所示:

EditText

此处<EditText android:id="@+id/text_name" android:inputType="text" android:text="some txt" . . ./> inputType,文字值为text,其中包含拼写错误的字词&#34; txt&#34; 。此EditText包含在一个显示为弹出窗口的布局中。

现在当某个"some txt"点击了Button并且这个布局加速时, txt 这个词被加下划线为一个错误的单词,当聚焦于任何其他键盘Activity中的单词正常显示且没有任何错误发生,但是当对焦于拼写错误的单词 txt 时,应用程序会崩溃并出现以下异常:

EditText

要解决此问题,我必须将11-09 16:50:02.126: W/dalvikvm(5205): threadid=1: thread exiting with uncaught exception (group=0x40ffc9a8) 11-09 16:50:02.127: W/System.err(5205): android.view.WindowManager$BadTokenException: Unable to add window -- token android.view.ViewRootImpl$W@41656d18 is not valid; is your activity running? 11-09 16:50:02.127: W/System.err(5205): at android.view.ViewRootImpl.setView(ViewRootImpl.java:646) 11-09 16:50:02.127: W/System.err(5205): at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:248) 11-09 16:50:02.127: W/System.err(5205): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) 11-09 16:50:02.127: W/System.err(5205): at android.widget.PopupWindow.invokePopup(PopupWindow.java:993) 11-09 16:50:02.127: W/System.err(5205): at android.widget.PopupWindow.showAtLocation(PopupWindow.java:847) 11-09 16:50:02.128: W/System.err(5205): at android.widget.PopupWindow.showAtLocation(PopupWindow.java:811) 11-09 16:50:02.128: W/System.err(5205): at android.widget.Editor$PinnedPopupWindow.updatePosition(Editor.java:2207) 11-09 16:50:02.128: W/System.err(5205): at android.widget.Editor$PinnedPopupWindow.show(Editor.java:2164) 11-09 16:50:02.128: W/System.err(5205): at android.widget.Editor$SuggestionsPopupWindow.show(Editor.java:2406) 11-09 16:50:02.128: W/System.err(5205): at android.widget.Editor.showSuggestions(Editor.java:1700) 11-09 16:50:02.128: W/System.err(5205): at android.widget.Editor$1.run(Editor.java:1599) 11-09 16:50:02.128: W/System.err(5205): at android.os.Handler.handleCallback(Handler.java:725) 11-09 16:50:02.129: W/System.err(5205): at android.os.Handler.dispatchMessage(Handler.java:92) 11-09 16:50:02.129: W/System.err(5205): at android.os.Looper.loop(Looper.java:153) 11-09 16:50:02.129: W/System.err(5205): at android.app.ActivityThread.main(ActivityThread.java:5299) 11-09 16:50:02.129: W/System.err(5205): at java.lang.reflect.Method.invokeNative(Native Method) 11-09 16:50:02.130: W/System.err(5205): at java.lang.reflect.Method.invoke(Method.java:511) 11-09 16:50:02.133: W/System.err(5205): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833) 11-09 16:50:02.134: W/System.err(5205): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 11-09 16:50:02.134: W/System.err(5205): at dalvik.system.NativeStart.main(Native Method) 中的inputType更改为EditText

那么,为什么会出现这个问题呢?以及如何使用textNoSuggestions作为inputType并处理拼写错误的单词而没有任何问题?

这就是我以编程方式处理它的方式:

text

1 个答案:

答案 0 :(得分:0)

我通过更改文字的inputType解决了这个问题,而不是text我将其更改为textNoSuggestions,即使输入的字词是否正确,也无法查看因此,在聚焦时应用程序不会崩溃。

因此,文本将定义为:

<EditText
    android:id="@+id/text_name"
    android:inputType="textNoSuggestions"
    android:text="some txt"
    .
    .
    ./>