这是Fragment包含WebView.
WebFragment.java
public class WebFragment extends Fragment {
String TAG = "WebFragment";
private WebView webView;
private String currentUrl = "http://www.google.com";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.webview_layout, null);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
webView = (WebView) getView().findViewById(R.id.helloWebview);
initWebView();
webView.loadUrl(currentUrl);
}
@SuppressLint("SetJavaScriptEnabled")
private void initWebView() {
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new JavaScriptInterface(), "HTMLOUT");
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
Log.e(TAG, "Loding...");
super.onPageStarted(view, url, favicon);
}
});
}
class JavaScriptInterface {
public void showHTML(String html) {
}
}
}
我还有 2 个基本片段(没有WebView)。然后我将所有这些 3Fragments放入ViewPager(WebFragment和Fragment1分别Fragment2) using FragmentAdapter。我添加android:configChanges="orientation|screenSize"了AndroidManifest.xml(所以WebView不会重新配置更改)。
现在我的问题是,在运行应用程序时,我将第一页(WebFragmet)更改ViewPager为第二页(Fragment1),然后我又回到了第一页。所以没有问题WebFragment。
现在我再次更改了ViewPager这样的WebFragment--> Fragment1-->Fragment2并通过反转上述操作的方向返回到第一页。但当时我看到WebViewinWebFragment正在重新加载。
还有一个问题,每当WebView开始加载时,我都会看到 2 个日志条目。
WebFragment Loading...
WebFragment Loading...
所以我的问题是:
1)如何防止在保留WebView时重新加载?
2)为什么这里加载两次?WebFragmentBackStackWebView
只要看到这个问题并帮助我(防止 WebView 在 FragmentPagerAdapter 中重新加载?)。