2012-04-21 39 views
16

Tôi có một tabhost với 3 tab. Trong mỗi tab này, có một webiview. Khi tôi nhấp vào tab, chế độ xem web cần phải "tải lại" ngay cả khi tôi đã ở đó trước đó, nó chưa được lưu. Có cách nào để lưu chế độ xem web không?Android webView saveState

Trả lời

34

này có thể được xử lý bởi overrwriting onSaveInstanceState (Bundle outState) trong hoạt động của bạn và gọi saveState từ webview:

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

Sau đó phục hồi này trong onCreate của bạn sau khi webview đã được tái thổi phồng tất nhiên:

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

bạn có thể tham khảo này LINK

+0

Liên kết bị hỏng. –

1

Hoặc bạn có thể nhìn vào sử dụng mảnh vỡ với tabHost của bạn. khi nhập một webView khác, bạn có thể đặt phân đoạn để ẩn và phần còn lại để hiển thị. khi bạn quay trở lại đoạn trước đó, nội dung sẽ không bị hủy. Đó là cách tôi đã làm nó và nó đã làm việc cho tôi.

+0

Xin lỗi, tôi biết câu trả lời của bạn đã lâu rồi nhưng tôi nghĩ bạn có thể giúp tôi lưu trạng thái của webView của mình. Đây là câu hỏi của tôi: http://stackoverflow.com/questions/26142255/retrieve-an-activity-after-time-out-warning-notification – Hamid

+0

Điều này không được đảm bảo. Các mảnh vỡ có thể bị phá hủy nếu chúng bị dừng lại. – William

9

restoreState chưa bao giờ đáng tin cậy. Và đến năm 2015 các tài liệu chấp nhận thực tế. (Thay đổi có thể được thực hiện cho các tài liệu vào khoảng năm 2014). Đây là những gì nó nói bây giờ.

Nếu nó được gọi sau khi WebView này đã có một cơ hội để xây dựng nhà nước (trang tải, tạo một back/danh sách phía trước, vv) có thể có không mong muốn tác dụng phụ. Xin lưu ý rằng phương pháp này không còn khôi phục dữ liệu hiển thị cho WebView này nữa.

Và các mục tương ứng cho saveState() nói như sau:

Xin lưu ý rằng phương pháp này không còn lưu trữ các dữ liệu hiển thị cho WebView này.

gì bạn thực sự nên làm trong phương pháp onCreate là để gọi webView.loadUrl() nếu bạn muốn hiển thị url ghé thăm, xin vui lòng xem này answer:

Nếu bạn lo lắng về các webview tải lại về biến đổi định hướng, vv

bạn có thể thiết lập hoạt động của bạn để xử lý các định hướng và thay đổi keyboardHidden, và sau đó chỉ cần rời khỏi WebView mình