webview中都会需要做个header头,上面有个返回按钮和当前页面的标题

首选处理获取标题功能 webview 封装好了一个函数,直接调用就可以

TextViewwebview_title=(TextView)findViewById(R.id.webview_title);WebViewwebView=(WebView)findViewById(R.id.web_view);Buttonback_button=(Button)findViewById(R.id.back_button);//...加载代码以及其余代码省略//获取当前html的title并赋值给webview_titlewebView.setWebChromeClient(newWebChromeClient(){@OverridepublicvoidonReceivedTitle(WebViewview,Stringtitle){//TODOAuto-generatedmethodstubsuper.onReceivedTitle(view,title);webview_title.setText(title);//titles.add(title);}});

webview返回按钮 以及手机返回键的返回功能

//手机返回键返回功能webView.setOnKeyListener(newOnKeyListener(){@OverridepublicbooleanonKey(Viewv,intkeyCode,KeyEventevent){//TODOAuto-generatedmethodstubif(event.getAction()==KeyEvent.ACTION_DOWN){if(keyCode==KeyEvent.KEYCODE_BACK&&webView.canGoBack()){webView.goBack();//titles.remove(titles.size()-1);//webview_title.setText(titles.get(titles.size()-1));returntrue;}}returnfalse;}});//webview的header的返回按钮的返回功能back.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){//TODOAuto-generatedmethodstubwebView.goBack();/*if(titles.size()>1){titles.remove(titles.size()-1);webview_title.setText(titles.get(titles.size()-1));}else{WebViewActivity.this.finish();}*/}});

基本的功能都实现了,运行后尝试下,会发现一个问题,在webview中,点进去可以,webview头上的title显示正常,返回时webview的title不会改变,也就是

publicvoidonReceivedTitle();

这个方法返回时不会执行,

解决方法:自己写个List集合

List<String>titles=newArrayList<String>();

获取html的title时候顺便将该title添加进titles

返回时remove掉最后一个,在从titles中取最后一个赋给webview的title

具体逻辑,取消上面3个方法中的代码注释