【发布时间】:2014-10-29 18:04:57
【问题描述】:
我使用Fragment 创建了一个WebView;这是我的代码:
public class MyWebView extends Fragment {
private WebView webView;
@SuppressLint("SetJavaScriptEnabled")
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Bundle args = getArguments();
String url = args.getString("url");
webView = (WebView) getView().findViewById(R.id.webView);
webView.setWebViewClient(new MyBrowser());
WebSettings webSettings = webView.getSettings();
webSettings.setSaveFormData(true);
webSettings.setUseWideViewPort(true);
webSettings.setLoadWithOverviewMode(true);
webSettings.setSupportZoom(true);
webSettings.setBuiltInZoomControls(true);
webSettings.setLoadsImagesAutomatically(true);
webSettings.setJavaScriptEnabled(true);
webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
webView.loadUrl(url);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.web_view, container, false);
view.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey( View v, int keyCode, KeyEvent event ) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (webView.canGoBack()) {
webView.goBack();
return true;
}
}
return false;
}
});
return view;
}
private class MyBrowser extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
}
我试图覆盖onBackPressed(),但它似乎不适用于Fragment。所以我使用了setOnKeyListener(),但它不起作用。
你能告诉我为什么返回按钮会关闭应用程序而不是返回上一个网页吗?
【问题讨论】:
-
我想你可以在这里找到更多信息...stackoverflow.com/questions/6077141/…
-
@PaytoN 该网址指的是使用活动而不是片段
-
后退按钮将您带出您打开的当前屏幕,在网页视图的情况下,无论您在网页视图中的哪个页面上,对于移动设备它只是一个屏幕,(片段或活动)所以当按下它会清除当前屏幕并返回,不管你在哪个网页链接..
标签: android webview fragment back-button onbackpressed