Fragment中添加一个WebView,webview的回退问题
2016-01-08 14:01
363 查看
在fragment中手机的回退键会被activity扑捉掉,经过多方查阅,下面是我处理这个问题的方法》
<pre name="code" class="java">public class AFragment extends Fragment { private WebView webView; // 需要加载的网页URL地址 private String url= "http://my.csdn.net/my/mycsdn"; public MarketFragment() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view=inflater.inflate(R.layout.fragment_market, container, false); webView = (WebView) view.findViewById(R.id.wv_market_jd); initWebView(); return view; } private void initWebView() { webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { //系统默认会打开系统浏览器去打开网页,为了要显示在自己的webview中必须设置这个属性 view.loadUrl(url); return super.shouldOverrideUrlLoading(view, url); } //加载开始时调用 @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); } // 加载结束时调用 @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); } }); webView.setWebChromeClient(new WebChromeClient() { //加载进度 @Override public void onProgressChanged(WebView view, int newProgress) { Log.e("WebView>>>>>>>", newProgress + ""); super.onProgressChanged(view, newProgress); } @Override public void onRequestFocus(WebView view) { super.onRequestFocus(view); } @Override public void onCloseWindow(WebView window) { super.onCloseWindow(window); } @Override public boolean onJsAlert(WebView view, String url, String message, JsResult result) { return super.onJsAlert(view, url, message, result); } @Override public boolean onJsConfirm(WebView view, String url, String message, JsResult result) { return super.onJsConfirm(view, url, message, result); } }); webView.loadUrl(url); // 得到setting WebSettings webSettings=webView.getSettings(); //设置支持Javascript webSettings.setJavaScriptEnabled(true); //支持的语言类型 webSettings.setDefaultTextEncodingName("UTF-8"); //设置可以访问文件 webSettings.setAllowFileAccess(true); webSettings.setDomStorageEnabled(true); <span style="font-size:24px;color:#ff0000;background-color: rgb(255, 255, 255);">//关键代码 webView.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View view, int keyCode, KeyEvent keyEvent) { if (keyEvent.getAction() == KeyEvent.ACTION_DOWN) { if (keyCode == KeyEvent.KEYCODE_BACK ) { //这里处理返回键事件 if (webView.canGoBack()){ webView.goBack(); Toast.makeText(getActivity(), "ok", Toast.LENGTH_SHORT).show(); return true; } } } return false; } });</span> } @Override public void onDestroy() { super.onDestroy(); //清除记录 webView.clearCache(true); webView.clearHistory(); webView.clearFormData(); webView.destroy(); }
相关文章推荐
- Objective-C的动态特性
- ios手势识别代理
- iOS: 如何在工程中设置 DEBUG 模式?
- ionic-v1.7.12-ios版修改
- cocos2dx在win32中全屏
- iOS视图层次结构
- google android volley framwork
- Lua/cocos2d-lua中定义类的四中方法
- Android Fragment 真正的完全解析(上)
- 在plist文件中设置app图标的隐藏
- 在Android中使用MVP
- Android5.0+(CoordinatorLayout)
- Android Handler内存泄露
- iosURL字符串的URLencode 和 encodeURIComponent(base64) 去除get时因特殊字符至错
- Android数据存储之SharedPreferences使用
- 【android】LayoutInflater.inflate方法的详解及xml根元素的布局参数不起作用的问题
- 检测微信是否已安装在手机上
- Android 中如何计算 App 的启动时间?
- android 解决APN问题
- IOS的处理touch事件处理(按照手指的移动移动一个圆,开发环境用的ios7,storyboard)