Я создал WebView
с использованием Fragment
; Вот мой код:Переопределение обратной кнопки во время просмотра веб-просмотра (фрагмент)
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- is-press-in-webview – PaytoN
@PaytoN, что url ссылается на использование активности, а не на фрагмент. – WardaLyn
Кнопка «Назад» выводит вас из текущего экрана, который вы открыли, в случае веб-представления, не имеет значения, вы находитесь на какой странице в веб-представлении, для передвигайте его только на одном экране (фрагмент или активность), поэтому, пока он отжимает его, он очищает текущий экран и возвращается, не имеет значения, к какой ссылке веб-страницы вы находитесь. –