0
我使用Fragment
創建了WebView
;這裏是我的代碼:查看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()
但它不起作用。 你能告訴我爲什麼後退按鈕關閉應用程序,而不是回到以前的網頁?
我想,在這裏你可以找到更多信息... http://stackoverflow.com/questions/6077141/how-to-go-back-to-previous-page-if-back-button-被按下在webview中 – PaytoN 2014-12-01 17:41:27
@PaytoN @PaytoN這個url指的是使用活動而不是片段 – WardaLyn 2015-03-11 10:55:06
後退按鈕可以讓你離開當前已經打開的屏幕,萬一網頁瀏覽,無論你在哪個網頁瀏覽網頁,移動它的只有一個屏幕,(片段或活動),所以當按下它清除當前屏幕並返回,無論你在哪個網頁鏈接.. – 2018-01-29 21:35:26