[英]How can I reload a URL inside a Webview Fragment on screen rotate?
我在片段内有以下webView 。 我的大问题是,指定的URL将在屏幕旋转时加载,而不是通过点击实现的实际URL。 “ onConfigurationChanged”方法将不起作用。
有没有办法重新加载屏幕旋转上的实际URL?
public class IndikatorenFragment extends Fragment {
public WebView webView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.content_fragment, container, false);
// getActivity() will hand over the context to the method
// if you call this inside an activity, simply replace getActivity() by "this"
if(!isConnected(getActivity())) buildDialog(getActivity()).show();
webView = (WebView) v.findViewById(R.id.webPage);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("file:///android_asset/indikatoren.html");
webView.setVisibility(View.GONE);
webView.setVisibility(View.VISIBLE);
webView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView viewx, String urlx) {
viewx.loadUrl(urlx);
return false;
}
});
webView.getSettings().setGeolocationEnabled(true);
webView.setOnKeyListener(new View.OnKeyListener() {
// allows going back in the web view by pressing return button
@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;
}
});
webView.setWebChromeClient(new WebChromeClient() {
@Override
// Allow Geolocation
public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
callback.invoke(origin, true, false);
}
});
return v;
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
public boolean isConnected(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netinfo = cm.getActiveNetworkInfo();
if (netinfo != null && netinfo.isConnectedOrConnecting()) {
NetworkInfo wifi = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
NetworkInfo mobile = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if ((mobile != null && mobile.isConnectedOrConnecting()) || (wifi != null && wifi.isConnectedOrConnecting()))
return true;
else return false;
} else return false;
}
public AlertDialog.Builder buildDialog(Context c) {
AlertDialog.Builder builder = new AlertDialog.Builder(c);
builder.setTitle("Es besteht keine Internet Verbindung");
builder.setMessage("Bitte stellen sie eine Verbindung zum Internet her, da die Rasterkarten eine intakte Verbindung benötigen.");
builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
return builder;
}
}
非常感谢您的帮助!
您可以将Webview的当前URL保存在onSaveInstanceState()
,并在娱乐时加载它:
public class IndikatorenFragment extends Fragment {
public WebView webView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
...
webView.loadUrl(savedInstanceState != null ? savedInstanceState.getString("url") : "file:///android_asset/indikatoren.html");
...
}
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putString("url", webView.getUrl());
super.onSaveInstanceState(outState);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.