gpt4 book ai didi

java - 在设备上运行的 PopupWindow 中聚焦 EditText 时出现异常

转载 作者:IT老高 更新时间:2023-10-28 23:23:25 25 4
gpt4 key购买 nike

我正在为 Android 开发一个 PopUp 窗口,它正在工作,我在其上添加了一个 EditText 和一个 Button,当在 ADV 上运行时,它可以正常工作,在设备上运行时,当我专注于 EditText 时,这会引发奇怪异常(exception)。

android.view.WindowManager$BadTokenException: Unable to add window - - token android.view.ViewRoot&48163b18 is not valid; is your active running?

我不知道这是否重要,但我正在使用 Swype 输入在 Galaxy Tab 上运行。

现在我阅读了 Window.showAtLocation 的规范

public void showAtLocation (View parent, int gravity, int x, int y)

Display the content view in a popup window at the specified location. If the popup window cannot fit on screen, it will be clipped. [...]

Parameters
parent a parent view to get the getWindowToken() token from
[...]

问题出在那个 token 上,但是我如何将 Activity token 传递给它呢?

我还写了一个小代码来重现错误。

PopupWindow window = new PopupWindow(activity);
window.setWidth(WindowManager.LayoutParams.WRAP_CONTENT);
window.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);

window.setTouchable(true);
window.setFocusable(true);

EditText text = new EditText(activity);
text.setText("Dont touch, this crash!");

window.setContentView(text);
window.showAtLocation(arg0, Gravity.NO_GRAVITY, 10,10);

在 AVD 上运行一切正常,而在设备上此崩溃并抛出我提到的错误。

我发现了一些新东西,当我处于横向模式时,不会发生此错误。

最佳答案

谢谢你,TheRedPill!我在 PopupWindow 中的 EditText 行为异常时遇到了同样的问题。它在三星 Galaxy S3、HTC One X 上运行,但在华为 MediaPad FHD 10 上崩溃。我一开始编辑应用程序就崩溃了。

你的解决方案:

editText.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);

为我解决了这个问题。

堆栈跟踪是:

08-15 15:49:03.690: ERROR/AndroidRuntime(8692): FATAL EXCEPTION: main
android.view.WindowManager$BadTokenException: Unable to add window -- token android.view.ViewRootImpl$W@417eefa8 is not valid; is your activity running?
at android.view.ViewRootImpl.setView(ViewRootImpl.java:585)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:326)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:224)
at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:149)
at android.view.Window$LocalWindowManager.addView(Window.java:547)
at android.widget.PopupWindow.invokePopup(PopupWindow.java:988)
at android.widget.PopupWindow.showAtLocation(PopupWindow.java:845)
at android.widget.PopupWindow.showAtLocation(PopupWindow.java:809)
at android.widget.Editor$PinnedPopupWindow.updatePosition(Editor.java:2147)
at android.widget.Editor$PinnedPopupWindow.show(Editor.java:2104)
at android.widget.Editor$SuggestionsPopupWindow.show(Editor.java:2349)
at android.widget.Editor.showSuggestions(Editor.java:1647)
at android.widget.Editor$1.run(Editor.java:1546)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)

关于java - 在设备上运行的 PopupWindow 中聚焦 EditText 时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4829718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com