Java 如何防止重新加载Webview页面

Java 如何防止重新加载Webview页面,java,android,android-fragments,webview,android-studio,Java,Android,Android Fragments,Webview,Android Studio,我已经创建了一个应用程序,其中我有3个选项卡,可以使用fragment显示网页。每次我从选项卡1切换到选项卡2,然后再切换回选项卡1时,选项卡1都会重新加载。我已经搜索了谷歌和我发现不起作用的解决方案。到目前为止,我已经尝试过: @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mWebView.saveState(outState); } @Ove

我已经创建了一个应用程序,其中我有3个选项卡,可以使用fragment显示网页。每次我从选项卡1切换到选项卡2,然后再切换回选项卡1时,选项卡1都会重新加载。我已经搜索了谷歌和我发现不起作用的解决方案。到目前为止,我已经尝试过:

 @Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mWebView.saveState(outState);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mWebView.restoreState(savedInstanceState); 
}
这是:

 <activity ...
      android:launchMode="singleInstance"
    android:alwaysRetainTaskState="true">
这是我的Webview片段之一:

  import android.os.Bundle;
  import android.support.v4.app.Fragment;
  import android.view.KeyEvent;
  import android.view.LayoutInflater;
  import android.view.View;
  import android.view.ViewGroup;
  import android.webkit.WebChromeClient;
  import android.webkit.WebView;
  import android.webkit.WebViewClient;
  import android.widget.ProgressBar;

  public class GamesFragment extends Fragment {

private ProgressBar progress;


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

    View rootView = inflater.inflate(R.layout.fragment_games, container, false);

    String url = "http://myurl.com";
    WebView myWebView  = (WebView) rootView.findViewById(R.id.webViewGames);
    myWebView.setWebChromeClient(new myWebViewClient());
    myWebView.getSettings().setJavaScriptEnabled(true);
    progress = (ProgressBar) rootView.findViewById(R.id.progressBar);
    progress.setMax(100);
    myWebView.loadUrl(url);


    myWebView.setWebViewClient(new WebViewClient() {

        @Override
        public boolean shouldOverrideUrlLoading(WebView View, String url) {
            View.loadUrl(url);
            GamesFragment.this.progress.setProgress(0);
            return true;
        }
    });


    myWebView.setOnKeyListener(new android.view.View.OnKeyListener()

    {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (event.getAction() == KeyEvent.ACTION_DOWN) {
                WebView webView = (WebView) v;

                switch (keyCode) {
                    case KeyEvent.KEYCODE_BACK:
                        if (webView.canGoBack()) {
                            webView.goBack();
                            return true;
                        }
                        break;
                }
            }

            return false;
        }
    });
    return rootView;

}


private class myWebViewClient extends WebChromeClient {
    @Override
    public void onProgressChanged(WebView view, int newProgress) {
        GamesFragment.this.setValue(newProgress);
        super.onProgressChanged(view, newProgress);
    }
}

public void setValue(int progress) {
    this.progress.setProgress(progress);
}


}
一件有趣的事情是,每当我使用Tab1和Tab2时,它们中没有一个会重新加载,但当我切换到Tab3,然后返回到Tab1时,只有它会重新加载

任何帮助都将不胜感激

您是否可以尝试添加:

viewPager.setOffscreenPageLimit(2);
根据文件,setOffscreenPageLimit将:

设置应保留到页面两侧的页数 视图层次结构中处于空闲状态的当前页面。除此之外的页面 需要时,将从适配器重新创建限制

您应该将此限制保持在较低的水平,尤其是当您的页面具有复杂的>布局时。此设置默认为1

默认值为1,因此当您转到选项卡3时,当前选项卡左侧有两个选项卡,因此将重新创建选项卡1

viewPager.setOffscreenPageLimit(2);