gpt4 book ai didi

java - 保存 WebView 的状态并重新加载位置

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:08:58 26 4
gpt4 key购买 nike

我知道有很多关于此的问题,但它们似乎都过时了并且不再有效 - 至少对我而言。我试图在用户退出或重新加载应用程序后保存 webview 的位置。我知道这段代码可用于保存和加载 Webview:

@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
myWebview.saveState(outState);
}

onCreate 中:

if (savedInstanceState != null) {
myWebview.restoreState(savedInstanceState);
}

但是,在 Android Developer Webview 页面中,它说明了以下关于 saveState 的内容:

“在 onSaveInstanceState(Bundle) 中保存此 WebView 的状态。请注意,此方法不再存储此 WebView 的显示数据。如果 restoreState(Bundle) 从未被调用,之前的行为可能会泄漏文件。”

链接 - https://developer.android.com/reference/android/webkit/WebView.html

如果我错了,这应该是有效的,它可能是我实现的另一个函数,它保存了 WebView 中显示的页面的微调器选择,并以与上面显示的非常相似的方式加载。也许同时使用两者不允许加载 WebView 的位置而只加载页面?这是我目前要保存的内容,当用户重新加载应用程序时,哪个 HTML 页面被加载到 WebView 中。

我的onCreate:

if (savedInstanceState != null){
mySpinner.setSelection(prefs.getInt("spinnerSelection", 0));
}

我的onSaveInstanceState:

@Override
public void onSaveInstanceState(Bundle savedInstanceState){

SharedPreferences getPrefs = PreferenceManager.getDefaultSharedPreferences(getActivity().getBaseContext());
SharedPreferences.Editor editor = getPrefs.edit();

values = Integer.parseInt(getPrefs.getString("pref_Sections", "1"));
switch (values) {
case 1:
int selectedPosition1 = mySpinner.getSelectedItemPosition();
editor.putInt("spinnerSelection1", selectedPosition1);
editor.commit();
break;
case 2:
int selectedPosition2 = mySpinner.getSelectedItemPosition();
editor.putInt("spinnerSelection2", selectedPosition2);
editor.commit();
break;
}
super.onSaveInstanceState(savedInstanceState);
}

是否有人对此问题有任何反馈,或者它是否不再像 Android Developer WebView 中描述的那样工作了?我正在考虑一种数学解决方法,但目前这超出了我的专业知识范围,我必须了解更多相关知识(而且我总体上不喜欢数学!)

感谢大家的回复!

最佳答案

您可以使用 getScrollY()获取您的 WebView 的垂直位置。保存在onSaveInstanceState

然后,使用 scrollTo(x, y)恢复位置:

 yourWebview.scrollTo(0, savedYPosition);

关于java - 保存 WebView 的状态并重新加载位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29718926/

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