2012-04-21 17 views
16

Mam tabhost z 3 zakładkami. Na każdej z tych kart znajduje się przeglądarka internetowa. Kiedy klikam kartę, przeglądarka musi "przeładować", nawet gdy byłem tam wcześniej, ale nie została zapisana. Czy istnieje sposób na zapisanie widoku internetowego?Android webView saveState

Odpowiedz

34

To mogą być obsługiwane przez overrwriting onSaveInstanceState (Bundle outState) w swojej działalności i nazywając SaveState z WebView:

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

Następnie odzyskać to w onCreate po WebView został ponownie nadmuchany przedmiotu:

@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) 
} 

można odnieść to LINK

+0

Link jest uszkodzony. –

1

Alternatywnie można przyglądać się przy użyciu fragmentów z tabHost. podczas wchodzenia do innego webView możesz ustawić fragment do ukrycia, a drugi do wyświetlenia. po powrocie do poprzedniego fragmentu zawartość nie zostanie zniszczona. Tak to zrobiłem i to zadziałało.

+0

Przepraszam, wiem, że twoja odpowiedź jest od dawna, ale myślę, że możesz mi pomóc zapisać stan mojego webView. Oto moje pytanie: http://stackoverflow.com/questions/26142255/retrieve-an-activity-after-time-out-warning-notification – Hamid

+0

Nie jest to gwarantowane. Fragmenty mogą zostać zniszczone, jeśli zostaną zatrzymane. – William

9

restoreState nigdy nie był niezawodny. A w 2015 roku dokumenty potwierdzają ten fakt. (Prawdopodobnie zmiana dotyczyła dokumentów około 2014 r.). To właśnie teraz mówi.

Jeśli to się nazywa po tym WebView miał szansę zbudować państwowych (strony obciążenia, należy utworzyć listę do przodu/do tyłu, itd.) Nie mogą być niepożądane skutki uboczne. Należy pamiętać, że ta metoda nie powoduje już odtworzenia danych wyświetlania dla tego WebView.

i odpowiadający wpis na SaveState() mówi tak:

Należy pamiętać, że ta metoda nie przechowuje danych wyświetlanych na to WebView.

Co naprawdę powinien zrobić wewnątrz metody onCreate jest wywołanie webView.loadUrl() Jeśli chcesz wyświetlić ostatnio odwiedził URL, proszę zobaczyć answer:

Jeśli jesteś zaniepokojony WebView przeładunku na zmianę orientacji itp

można ustawić aktywny obsłużyć orientację i zmiany keyboardHidden, a potem po prostu opuścić WebView sam