WebView中的Backpress不起作用

问题描述 投票:-1回答:2

我有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”中。

android android-fragments webview
2个回答
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;
    }

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重定向回溯历史记录。

© www.soinside.com 2019 - 2024. All rights reserved.