使用webview遇到的问题

1:处理webview返回键

     如果用webview点链接看了很多页以后,如果不做任何处理,点击系统“Back”键,整个浏览器会调用finish()而结束自身,
      如果希望浏览的网页回退而不是退出浏览器,需要在当前Activity中处理并消费掉该Back事件,覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法


public boolean onKeyDown(int keyCode, KeyEvent event) {

        if (event.getAction() == KeyEvent.ACTION_DOWN) {
            switch (keyCode) {
            case KeyEvent.KEYCODE_BACK:
                if (webView.canGoBack() == true) {
                    webView.goBack();
                } else {
                    finish();
                }
                return true;
            }

        }
        return super.onKeyDown(keyCode, event);
    }


注意使用这个方法时 不要重写

@Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            // TODO Auto-generated method stub
            // view.loadUrl(url);
            // return true;
            return super.shouldOverrideUrlLoading(view, url);
        }

否则返回键不能返回到前一个Activity页面


因为我重写了这个方法 所以导致按下系统返回键总是不能返回到前一个Activity页面


感谢 http://www.eoeandroid.com/thread-274355-1-1.html


2:在网页加载的时候给用户一个提示


class webViewClient extends WebViewClient {

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);

            if (!pd.isShowing()) {
                pd.show();// 显示进度对话框
            }

        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);

            if (pd.isShowing()) {
                pd.hide();
            }

        }
    }

注意:如果打开的网页有用户登录的功能 则一定要加判断pd.isShowing(),原因是onPageStartedonPageFinished 会加载两次 所以导致pd会显示两次

感谢:http://bbs.csdn.net/topics/390442564

3:用webview加载网页时,点击网页中的视频进行播放,按返回键回到上一个页面,视频声音还在

处理方法:设置webview.loadUrl("");

解释:

我们在退出一个activity时,这个activity还在堆栈里没有销毁
所以退出前,让webview加载新的url,那么它就不会播放原来的内容了




你可能感兴趣的:(使用webview遇到的问题)