У меня есть tabhost с 3 вкладками. В каждом из этих вкладок есть веб-просмотр. Когда я нажимаю вкладку, веб-просмотр нужно "перезагрузить", даже когда я был там раньше, он не был сохранен. Есть ли способ сохранить веб-просмотр?
Android webView saveState
Ответ 1
Это может быть обработано overrwriting onSaveInstanceState (Bundle outState) в вашей активности и вызовом saveState из веб-обозревателя:
@Override
protected void onSaveInstanceState(Bundle outState) {
webView.saveState(outState);
}
Затем восстановите это в своем onCreate после того, как веб-просмотр был повторно завышен, конечно:
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.blah);
WebView webview = (WebView)findViewById(R.id.webview);
if (savedInstanceState != null)
webview.restoreState(savedInstanceState);
else
webview.loadUrl(URLData)
}
вы можете ссылаться на этот LINK
Ответ 2
restoreState никогда не был надежным. И к 2015 году документы принимают факт. (Возможно, изменение было внесено в документы около 2014 года). Это то, что он говорит сейчас.
Если он вызывается после того, как этот WebView имел возможность построить состояние (загружать страницы, создавать список назад/вперед и т.д.), может быть нежелательные побочные эффекты. Обратите внимание, что этот метод больше не работает восстанавливает данные отображения для этого WebView.
И соответствующая запись для saveState() говорит так:
Обратите внимание, что этот метод больше не сохраняет отображаемые данные для этот WebView.
То, что вам действительно нужно сделать внутри метода onCreate, - это вызвать webView.loadUrl(), если вы хотите отобразить последний посещенный URL-адрес, см. этот ответ:
Если вас беспокоит перезагрузка webview при изменении ориентации и т.д.
вы можете настроить свою активность для обработки ориентации и изменений с помощью клавиатурыHidden, а затем просто оставить только WebView
Ответ 3
В качестве альтернативы вы можете изучить фрагменты с помощью tabHost. при входе в другой webView вы можете установить фрагмент, чтобы скрыть, а другой - показать. когда вы вернетесь к предыдущему фрагменту, содержимое не будет уничтожено. То, как я это сделал, и это сработало для меня.