Webview保存密码旋转问题

5
我在一个“DialogFragment”中展示了一个登录页面,其中嵌入了一个“WebView”。当用户输入用户名和密码后,会提示用户保存密码。但是如果在此时用户旋转手机,“WebView”将会崩溃,提示框将被隐藏,因而无法重新输入数据。在这种情况下,“WebView”的功能将被禁用。特别是,在“DialogFragment”生存配置更改的情况下,用户将无法提交数据,即使我再次更改配置也不行。另一个问题是,操作系统内部不再恢复,除非我重构所有内容。例如,当我离开“WebView”并重新创建它时,键盘不会显示,直到再次更改配置。
以下是崩溃日志:
12-24 08:36:21.694: E/WindowManager(21235): Activity com.example.twitterlibraryservice.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@45aef418 that was originally added here
12-24 08:36:21.694: E/WindowManager(21235): android.view.WindowLeaked: Activity com.example.twitterlibraryservice.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@45aef418 that was originally added here
12-24 08:36:21.694: E/WindowManager(21235):     at android.view.ViewRoot.<init>(ViewRoot.java:255)
12-24 08:36:21.694: E/WindowManager(21235):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
12-24 08:36:21.694: E/WindowManager(21235):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
12-24 08:36:21.694: E/WindowManager(21235):     at android.view.Window$LocalWindowManager.addView(Window.java:424)
12-24 08:36:21.694: E/WindowManager(21235):     at android.app.Dialog.show(Dialog.java:241)
12-24 08:36:21.694: E/WindowManager(21235):     at android.app.AlertDialog$Builder.show(AlertDialog.java:802)
12-24 08:36:21.694: E/WindowManager(21235):     at android.webkit.WebView.onSavePassword(WebView.java:1065)
12-24 08:36:21.694: E/WindowManager(21235):     at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:431)
12-24 08:36:21.694: E/WindowManager(21235):     at android.os.Handler.dispatchMessage(Handler.java:99)
12-24 08:36:21.694: E/WindowManager(21235):     at android.os.Looper.loop(Looper.java:143)
12-24 08:36:21.694: E/WindowManager(21235):     at android.app.ActivityThread.main(ActivityThread.java:4717)
12-24 08:36:21.694: E/WindowManager(21235):     at java.lang.reflect.Method.invokeNative(Native Method)
12-24 08:36:21.694: E/WindowManager(21235):     at java.lang.reflect.Method.invoke(Method.java:521)
12-24 08:36:21.694: E/WindowManager(21235):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
12-24 08:36:21.694: E/WindowManager(21235):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
12-24 08:36:21.694: E/WindowManager(21235):     at dalvik.system.NativeStart.main(Native Method)

编辑 修正了WebView键盘问题,使其在创建后请求焦点。

mWebView.requestFocus();
1个回答

0

我猜你的Activity没有处理方向变化。因此,Android操作系统会杀死你的Activity并创建一个新的Activity来适应新的方向。

你可以尝试在Activity的onPause方法中调用DialogFragment的dimiss方法。

这可能会修复你的泄漏问题,但行为可能不是你期望的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接