Подтвердить что ты не робот

Android webView saveState

У меня есть tabhost с 3 вкладками. В каждом из этих вкладок есть веб-просмотр. Когда я нажимаю вкладку, веб-просмотр нужно "перезагрузить", даже когда я был там раньше, он не был сохранен. Есть ли способ сохранить веб-просмотр?

4b9b3361

Ответ 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 вы можете установить фрагмент, чтобы скрыть, а другой - показать. когда вы вернетесь к предыдущему фрагменту, содержимое не будет уничтожено. То, как я это сделал, и это сработало для меня.