温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

webview 获取当前html的title以及返回时title的变化处理

发布时间:2020-07-15 05:22:56 来源:网络 阅读:6335 作者:zd78978971 栏目:开发技术

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

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

 TextView webview_title = (TextView) findViewById(R.id.webview_title);
 WebView webView = (WebView) findViewById(R.id.web_view);
 Button back_button = (Button) findViewById(R.id.back_button);
 //...加载代码以及其余代码省略
 //获取当前html的title 并赋值给webview_title
 webView.setWebChromeClient(new WebChromeClient() {
    @Override
    public void onReceivedTitle(WebView view, String title) {
            // TODO Auto-generated method stub
	    super.onReceivedTitle(view, title);
	    webview_title.setText(title);
	    //titles.add(title);
    }
  });

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

//手机返回键 返回功能
webView.setOnKeyListener(new OnKeyListener() {
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
	// TODO Auto-generated method stub
	if (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));
		return true;
	    }
	}
	return false;
    }
});

//webview的header的返回按钮的返回功能
back.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
	// TODO Auto-generated method stub
	webView.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不会改变,也就是 

public void onReceivedTitle();

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

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

List<String> titles = new ArrayList<String>();

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

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

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

向AI问一下细节
推荐阅读:
  1. WebView Demo
  2. webview

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI