【问题标题】:Save state of webpage in webview inside fragment在片段内的 webview 中保存网页的状态
【发布时间】:2014-08-18 06:13:24
【问题描述】:

在 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);
    }
}

【问题讨论】:

    标签: android android-fragments webview navigation-drawer


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-01
        相关资源
        最近更新 更多