WebView中的Backpress不起作用

时间:2017-12-28 10:26:13

标签: android android-fragments webview

我有app,一个Activity,点击按钮布局后,活动会随着片段布局而变化,在布局中我只有WEBVIEW。然后加载所有可点击的网址页面然后我点击后退按钮它进入活动,而不是上一页。这是为什么?

 myWebView.setOnKeyListener(new View.OnKeyListener(){

        public boolean onKey(View v, int keyCode, KeyEvent event) {

            if (keyCode == KeyEvent.KEYCODE_BACK
                    && event.getAction() == MotionEvent.ACTION_UP) {
                Log.d(Constants.TAG_FRAGMENT,"ACTION_UP");
                if(myWebView.canGoBack())
                Log.d(Constants.TAG_FRAGMENT,"goBack");
                myWebView.goBack();
                return true;
            }
            return false;
        }
    });

为什么CanGoBack不起作用?仅在日志节目" ACTION_UP"。

2 个答案:

答案 0 :(得分:1)

因为您在"{ }"

中没有使用if condition个大括号
  if (keyCode == KeyEvent.KEYCODE_BACK
         && event.getAction() == MotionEvent.ACTION_UP) {

         Log.d(Constants.TAG_FRAGMENT,"ACTION_UP");

         if(myWebView.canGoBack()){
              Log.d(Constants.TAG_FRAGMENT,"goBack");
              myWebView.goBack();
         }

         return true;
    }

答案 1 :(得分:0)

您可以使用KeyListener WebView功能,而不是将Activity's分配给OnKeyDown,而不是:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        Log.d(Constants.TAG_FRAGMENT,"ACTION_UP");
           if(myWebView.canGoBack()){
                Log.d(Constants.TAG_FRAGMENT,"goBack");
                myWebView.goBack();
                return true;
            } else {
                return super.onKeyDown(keyCode, event);
            }
        } else {
            return super.onKeyDown(keyCode, event);
        }
    }

修改

来自Docs

  当且仅当此WebView具有后退历史记录时,

canGoBack才返回true   项目

因此,请确保您有webview重定向的正确回溯历史记录。