android 点击webView中的按钮修改布局问题
很多时候项目都需要用到webView,而界面上面往往是不止有webview一个控件,还会有其他的控件,有可能就需要通过点击webView中的某个按钮来进行修改页面布局的操作,而这个时候,如果直接在js调用android中的方法中,也就是在android中写的方法,直接去修改布局,将会发生错误。
例如,在webView上需要点击某个按钮,来进行布局的显示和隐藏,那么在android中的写法如下:
首先初始化webView的时候:
webView
.addJavascriptInterface(
this
,
"cancel"
);
//对应js中的cancel.xxx
对应cancel对象调用的方法如下:
@JavascriptInterface
public void showMenu(){
id_ll_menu_all.setVisibility(View.VISIBLE);//某个控件的显示
}
如果是这样写,就会发生错误,原因跟子线程直接修改UI界面是一样的,使用正确的使用如下:
@JavascriptInterface
public void showMenu(){
handler.sendEmptyMessage(1);
}
定义一个消息变量
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
id_ll_menu_all.setVisibility(View.VISIBLE);
}
};
这样既可。