在片段内的webview中保存网页状态

时间:2014-08-18 06:13:25

标签: android android-fragments webview navigation-drawer

在webview中使用Navigation Drawer调用网页。但是当通过菜单移动时,它会一次又一次地重新加载整个网站。我只想保存用户离开网页的状态而不是从网页的开头。

感谢您的帮助。

代码: -

    public class Facebook extends Fragment {
    // this Fragment will be called from MainActivity
    public Facebook(){}

    private WebView webView ;
    private Bundle webViewBundle;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.facebook, container, false);
        webView = (WebView) rootView.findViewById(R.id.facebook);
        webView.setWebViewClient(new WebViewClient());
        webView.getSettings().setLoadWithOverviewMode(true);
        webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setBuiltInZoomControls(true);
        webView.getSettings().setSupportZoom(true);
        webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);   
        webView.getSettings().setAllowFileAccess(true); 
        webView.getSettings().setDomStorageEnabled(true);
        webView.getSettings().setRenderPriority(RenderPriority.HIGH);
        if (webViewBundle == null) {
            try{
                webView.loadUrl("http://www.facebook.com");
            }catch (Exception e){
                e.printStackTrace();}
        } else {

            webView.restoreState(webViewBundle);
            }
        return rootView;
        }
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
    public void onPause() {
        super.onPause();

        webViewBundle = new Bundle();
        webView.saveState(webViewBundle);
    }
}

2 个答案:

答案 0 :(得分:0)

首次加载网站后,您是否尝试将缓存模式设置为LOAD_CACHE_ONLY?

WebSettings webSettings = webView.getSettings();
webSettings.setCacheMode(LOAD_CACHE_ONLY);

答案 1 :(得分:0)

在感到沮丧或拉扯你的头发之前,请将其添加到viewpager旁边。

ViewPager.setOffscreenPageLimit(3);// three is my number of fragments.