Я знаю, что есть несколько вопросов об этом, но все они кажутся старыми и больше не работают - по крайней мере, для меня. Я пытаюсь сохранить позицию webview после того, как пользователь уйдет или перезагрузит приложение. Я знаю, что этот код можно использовать для сохранения и загрузки Webview:
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
myWebview.saveState(outState);
}
и onCreate
:
if (savedInstanceState != null) {
myWebview.restoreState(savedInstanceState);
}
Но на странице просмотра веб-обозревателя Android говорится следующее о saveState
:
"Сохраняет состояние этого WebView, используемого в onSaveInstanceState (Bundle). Обратите внимание, что этот метод больше не хранит данные отображения для этого WebView. Предыдущее поведение потенциально может утечка файлов, если restoreState (Bundle) никогда не вызывалось."
Ссылка - https://developer.android.com/reference/android/webkit/WebView.html
Если я ошибаюсь, и это ПОЛНОСТЬЮ работает, это может быть моя реализация другой функции, которая сохраняет выбор spinner страницы, показанной в WebView, и загружается очень похоже, как показано выше. Возможно, использование обоих параметров не позволяет загружать позицию WebView и только страницу? Вот что я имею в настоящее время, чтобы сохранить, какая страница HTML загружена в WebView, когда пользователь перезагружает приложение.
Мой onCreate
:
if (savedInstanceState != null){
mySpinner.setSelection(prefs.getInt("spinnerSelection", 0));
}
my 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? Я рассматривал математическое обходное решение, но в настоящий момент это связано с моим опытом, и я должен был бы узнать больше об этом (плюс мне не нравится математика вообще!)
Спасибо всем ответам!