Java和JavaScript相互沟通.docx
《Java和JavaScript相互沟通.docx》由会员分享,可在线阅读,更多相关《Java和JavaScript相互沟通.docx(14页珍藏版)》请在冰豆网上搜索。
Java和JavaScript相互沟通
因为Android软件开发分工目前还没有细化,程序员往往需要负责软件界面的开发,尽管软件的界面图片已经由美工设计好了,但如果使用layout技术把软件做成如图片所示的界面确实很困难,而且也比较耗时。
Android通过WebView实现了JavaScript代码与Java代码互相通信的功能,使得Android软件的界面开发也可以采用HTML网页技术,这样,广大网页美工可以参与进Android软件的界面开发工作,从而把程序员从中解脱出来。
目前在一些场合已经可以取代Layout。
下面是一个使用Html作为UI实现的的电话拨号器的实例。
界面设计
其中数据可以来自于SQLite数据库,也可以来自于内容提供者,或者来自于网络,点击电话号码下的链接能够拨打电话,界面用Html实现。
访问数据库需要用Java语言,并且数据需要在Html界面上显示,但Html能运行JavaScript脚本语言,而不支持Java语言。
值得大家高兴的是,Android实现了JavaScript与Java语言互访的功能,这样从HtmlJavaScript—>Java,整个通道就被打通,Html可以使用SQLite数据库及内容提供者中的数据了。
其中JavaScript和Java之间可以传递Json格式的数据,因此在传递数据时需要进行数据格式的转换。
创建名为“PhoneUIByHtmlDemo”的工程,图片如下
点击【Finish】。
编写网页文件:
在assets目录下新建一个Html文件phoneui.html。
内容如下:
DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:
//www.w3.org/TR/html4/loose.dtd">
Inserttitlehere
//该部分用到了JavaScript的一些知识。
不熟练的读者可以查阅相关书籍。
//或者可由美工做出来之后,进行必要的修改!
functionshow(jsondata){
//将传递过来的json数据转换为对象
varjsonobjs=eval(jsondata);
//获取下面定义的的表格
vartable=document.getElementById("personTable");
//遍历上面创建的json对象,将每个对象添加为表格中的一行,其每个属性为一列
for(vari=0;i//添加一行
vartr=table.insertRow(table.rows.length);
//添加三个单元格
vartd1=tr.insertCell(0);
vartd2=tr.insertCell
(1);
td2.align="center";
vartd3=tr.insertCell
(2);
//设置么个单元格的内容和属性,
//其中innerHTML为设置或获取位于对象起始和结束标签内的HTML
//jsonobjs[i]为对象数组中的第i个对象
td1.innerHTML=jsonobjs[i].id;
td2.innerHTML=jsonobjs[i].name
//为显示的内容添加超链接。
//超链接会调用Java代码中的call()方法并且把内容作为参数传递过去
td3.innerHTML="sharp.call(\""+jsonobjs[i].phone+"\")'>"+jsonobjs[i].phone+"";;
}
}
--onload指定了当该页面被加载时调用的方法,本例调用了Java代码中的contactlist方法-->
0000"onload="javascript:
sharp.contactlist()">
--定义一个表格,显示数据-->
编号姓名电话
|