2012-04-21 17 views
16

मेरे पास 3 टैब के साथ एक टैबहोस्ट है। इनमें से प्रत्येक टैब में एक वेबिव्यू है। जब मैं एक टैब पर क्लिक करता हूं तो वेबव्यू को "रीलोड" करने की आवश्यकता होती है, भले ही मैं वहां गया था, यह सहेजा नहीं गया है। क्या वेबदृश्य सहेजने का कोई तरीका है?एंड्रॉइड वेब व्यू saveState

उत्तर

34

यह अपनी गतिविधि में onSaveInstanceState (बंडल outState) overrwriting और वेबव्यू से 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

+0

लिंक टूटा हुआ है। –

1

वैकल्पिक रूप से आप अपने tabHost साथ टुकड़े का उपयोग करते हुए देख सकते हैं। एक और वेब व्यू दर्ज करते समय आप छिपाने के लिए टुकड़ा सेट कर सकते हैं और दूसरे को दिखाने के लिए सेट कर सकते हैं। जब आप पिछले खंड में वापस आते हैं तो सामग्री नष्ट नहीं होती। यह है कि मैंने यह कैसे किया और यह मेरे लिए काम किया।

+0

क्षमा करें, मुझे पता है कि आपका उत्तर बहुत समय पहले है, लेकिन मुझे लगता है कि आप मेरी वेबव्यू की स्थिति को बचाने में मेरी मदद कर सकते हैं। यहां मेरा प्रश्न है: http://stackoverflow.com/questions/26142255/retrieve-an-activity-after-time-out-warning-notification – Hamid

+0

यह गारंटी नहीं है। अगर वे रुक गए हैं तो टुकड़े नष्ट हो सकते हैं। – William

9

restoreState कभी विश्वसनीय नहीं था। और 2015 आओ दस्तावेज इस तथ्य को स्वीकार करते हैं। (परिवर्तन शायद 2014 के दस्तावेजों में किया गया था)। यह वही है जो अब कहता है।

अगर यह करने के बाद इस WebView (, आदि पृष्ठों को लोड एक वापस/आगे की सूची बनाने के) राज्य निर्माण करने के लिए वहाँ अवांछनीय दुष्प्रभाव हो सकता है का अवसर मिल सके कहा जाता है। कृपया ध्यान दें कि यह विधि अब इस वेब व्यू के प्रदर्शन डेटा को पुनर्स्थापित नहीं करती है।

और savestate() के लिए इसी प्रविष्टि इस प्रकार बोलता है:

कृपया ध्यान दें कि इस विधि नहीं रह गया है इस WebView के लिए प्रदर्शन डेटा संग्रहीत करता है।

आप वेबव्यू बारे में चिंतित हैं पुन: लोड:

क्या तुम सच में onCreate विधि के अंदर करना चाहिए webView.loadUrl() कॉल करने के लिए यदि आप पिछली बार देखे यूआरएल प्रदर्शित करना चाहते हैं, तो कृपया इस answer देखना उन्मुखीकरण परिवर्तन पर आदि

आप अभिविन्यास और keyboardHidden परिवर्तनों को संभाल अपनी गतिविधि सेट कर सकते हैं, और फिर बस WebView अकेला छोड़ दो

संबंधित मुद्दे