我在我的应用程序的一个片段中设置了一个webview。背压的问题在于,如果我浏览了我的网页浏览中的5个页面,按下后退按钮会让我一直回到第一步(硬编码的URL)。我需要做的是,当用户在第5页上时按回来获取第4页上的用户,而不是一直到第1页。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_blog, container, false);
webView = (WebView) rootView.findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient());
webView.loadUrl("http://www.facebook.com/");
webView.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
webView.goBack();
return true;
}
return false;
}
});
return rootView;
}
答案 0 :(得分:2)
问题是 onKey 方法被调用2次 - 对于KeyEvent.ACTION_DOWN和KeyEvent.ACTION_UP。
所以解决方案是:
webView.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
if (webView.canGoBack()) {
webView.goBack();
return true;
}
}
return false;
}
});