如何在Android微信开发工具使用教程中使用JavaBean

android的WebKit上的JS直接使用Java Bean - 开源中国社区
当前访客身份:游客 [
当前位置:
发布于 日 10时,
使用android WebKit上JS直接调用java bean方法
代码片段(4)
1.&[代码]java bean代码&&&&
public class Bean{
public void setTitle(String title){
this.title =
public String getTitle(){
return this.
2.&[代码]android端&&&&
package com.xu81.tw4a;
import java.util.L
import android.app.A
import android.webkit.WebChromeC
import android.webkit.WebS
import android.webkit.WebV
public class TiddlyWiki4Android extends Activity {
private WebView mainWebV
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//webview对象
mainWebView = (WebView) findViewById(R.id.mainWebView);
WebSettings setting = mainWebView.getSettings();
setting.setJavaScriptEnabled(true);//允许javascript
mainWebView.setWebChromeClient(new WebChromeClient());//初始化WebChromeClient对象
Bean b = new Bean();
b.setTitle("title");
mainWebView.addJavascriptInterface(b, "bean");//添加javascript对象
mainWebView.loadUrl("file:///android_asset/test.html");//加载本地html页面
3.&[代码]javascript端调用方式&&&&
function getDefault(){
var bean = window.
var title = bean.getTitle();
alert(title);
4.&[图片] screen.png&&&&
开源中国-程序员在线工具:
相关的代码(275)
58回/80629阅
8回/72244阅
41回/44714阅
23回/34299阅
58回/33841阅
36回/33943阅
20回/28199阅
15回/27638阅
67回/25785阅
25回/25319阅
我在android 2.3.3下运行,老出错,崩溃了。
06-05 15:34:38.902: INFO/ActivityManager(75): /.web.WebViewDemo: +3s882ms
06-05 15:34:40.481: INFO/ActivityManager(75): Starting: Intent { /.web.TiddlyWiki4Android } from pid 591
06-05 15:34:41.451: WARN/dalvikvm(591): JNI WARNING: jarray 0x40573c00 points to non-array object (Ljava/lang/S) 06-05 15:34:41.481: INFO/dalvikvm(591): &WebViewCoreThread& prio=5 tid=10 NATIVE
06-05 15:34:41.491: INFO/dalvikvm(591):&& | group=&main& sCount=0 dsCount=0 obj=0x40540c28 self=0x235e70
06-05 15:34:41.502: INFO/dalvikvm(591):&& | sysTid=600 nice=0 sched=0/0 cgrp=default handle=2288904
06-05 15:34:41.531: INFO/dalvikvm(591):&& | schedstat=(
06-05 15:34:41.531: INFO/dalvikvm(591):&& at android.webkit.LoadListener.nativeAddData(Native Method)
06-05 15:34:41.541: INFO/dalvikvm(591):&& at android.webkit.LoadListener.nativeAddData(Native Method)
06-05 15:34:41.541: INFO/dalvikvm(591):&& at android.mitLoad(LoadListener.java:1169)
06-05 15:34:41.561: INFO/dalvikvm(591):&& at android.webkit.LoadListener.handleMessage(LoadListener.java:208)
06-05 15:34:41.561: INFO/dalvikvm(591):&& at android.os.Handler.dispatchMessage(Handler.java:99)
06-05 15:34:41.571: INFO/dalvikvm(591):&& at android.os.Looper.loop(Looper.java:123)
06-05 15:34:41.581: INFO/dalvikvm(591):&& at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:629)
2楼:LiangX 发表于
2.1 的模拟器上没有问题
3楼:暗夜v公爵 发表于
非常明确告诉你2.3是有问题的 运行webkit,建议放弃吧
开源从代码分享开始
<的其它代码android将json转化为javaBean
前提条件是javaBean必须有getter和setter方法而且,必须有无参的构造方法
import java.io.FileInputS
import java.io.FileNotFoundE
import java.lang.reflect.F
import org.json.JSONO
import android.os.E
import android.util.L
import android.widget.T
public class ParseJson2BeanUtils {
&public static &T& T
parseJson2Bean(JSONObject
object,Class&T& clazz ) throws
Exception{
&&FileInputStream fis = new
FileInputStream("/mnt/sdcard/json.txt");
&&int len =
fis.available();
&&byte[] buffer = new
byte[len];
&&fis.read(buffer);
&&object = new JSONObject(new
String(buffer));
&&T newInstance =
&&Field[] fields =
clazz.getFields();
&&//只要保证clazz有一个无参的public构造方法就不可能发生异常
&&&newInstance =
clazz.newInstance();
&&} catch (Exception e) {
&&&e.printStackTrace();
&&for(int i = 0;i&
fields.i++){
&&&String name =
fields[i].getName();
&&&&//不可能发生的异常
&&&&&String
jsonName = name.replaceFirst(name.substring(0, 1),
name.substring(0, 1).toUpperCase());
&&&&&if(object.has(jsonName)){
&&&&&&if(jsonName.equals("ResultCode")){
&&&&&&&fields[i].set(newInstance,
object.getInt(jsonName));
&&&&&&}else{
&&&&&&&fields[i].set(newInstance,
object.getString(jsonName));
&&&&&&Log.i("name",
name+"****");
&&&&&//Log.i("name",
jsonName+":"+object.has(jsonName)+object.getString(jsonName));
catch (Exception e) {
TODO Auto-generated catch block
&&&&&e.printStackTrace();
&&return newI
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。原创文章,转载请注明出处:&&&&&&&&&&&&&&&&&&&&&&
Android开发中,我们经常用到JavaBean类以及序列化的知识,但经常用并不代表能够深入理解,
今天我希望来总结一下JavaBean类和序列化知识,以便让自己理解的更加深入。
首先说一下JavaBean类,我们在Android开发中对JavaBean类的概念没有非常严格,在JSP开发中,Bean类
有相对严格的规范,这里http://wiki.netbeans.org/NetBeansJavaBeansTutorial,是Wiki上SUN公司的
一些定义,比如一些命名的规则,必须有一个空的构造方法等等规定,有些Bean类的规范还要求必须实现序列
化。但我们在Java开发中使用到的Bean类并没有那么严格,这是因为用途不同。我们在Android开发中使用Bean
类最多的场景是从网络获取数据,将数据以Bean类组织,Bean类中的数据用于填充UI界面中的控件。此处使用
Bean类主要是组织数据方便,便于将其中的数据填充到控件中。
再说一下序列化,序列化的作用是①将对象的状态保存在存储媒体中以便可以在以后重新创建出完全相同的副本;
②按值将对象从一个应用程序域发送至另一个应用程序域或者进行网络传输。
Android中的对象序列化的过程是将对象转化为字节数组,反序列化就是将字节数组重新恢复成对象。
我们在Android开发中,一般在Bundle,intent传递Bean类对象(或包含Bean类的集合)时,需要进行序列化;
在IPC机制中也用到了Bean类的序列化。注意,传递的Bean类对象,并不是原对象本身,而是原对象的复制,
两者的地址不一样,但其他值是一样的。当在不同Activity见传递对象时,因为不是传递的原对象的引用,从而
避免了内存泄漏。
我们再用通俗一些的语言说一下序列化的作用:
①就是将对象的状态保存在磁盘上,当程序不运行时,该状态不消失,下次程序运行时读取该状态,恢复对象,
更直白一些,就是保存。当然保存的方法有很多很多种,这个只是一种,且主要针对实体类;
②在Activity之间,Activity和Fragment之间,进程间,传递对象,或者网络传递对象,这个时候传递的是序
列化后的Byte数组,也就是方便传输,不易出错,不同程序间兼容性更好;
可看到有人这样理解序列化的作用:
也就是换个时间,换个地点使用对象信息
换个时间,就是先将对象信息存盘,等需要的时候再次读取,说的是同一个Activity或者Fragment对Bean类信息的使用;
换个地点,也就是不同Activity或者Fragment,或者不同进程,甚至不同程序对Bean类信息的使用。
两种序列化的区别:
①实现Serializable接口由JavaSE支持,而实现Parcelable接口是Android特有的。实现Parcelable比实现Serializable
效率高,但用法稍微复杂;
②实现Serializable接口,只需要我们标记一下,系统自动将对象序列化;实现Parcelable接口,还需要实例化静态内部
变量CREATOR,需要我们操作辅助实现序列化;
③在使用内存的时候,Parcelable的性能比Serializable好,在内存开销方面较小,所以在内存间数据传输时推荐使用Parcelable,如activity间传输数据;
④在永久化保存对象的时候,Serializable可以实现,所以在需要保存或网络传输数据时选择Serializable。
Parcelable不能用在需要将对象存储在磁盘的情况下,且因为android不同版本Parcelable可能不同,所以不推荐使用Parcelable进行数据持久化;
⑤Serializable在序列化的时候会产生大量的临时变量,从而引起频繁的GC,影响效率;
本篇文章没有叙述严格定义,其中的严格概念今后会在的文章中具体阐明。
阅读(...) 评论()你正在使用的浏览器版本过低,将不能正常浏览和使用知乎。查看: 953|回复: 9
Gson解析哪种javaBean写法更实用
签到天数: 355 天连续签到: 5 天[LV.8]以坛为家I主题帖子e币
没有eoe的账号,级别还太低,出门如何吹牛逼?
才可以下载或查看,没有帐号?
如题,两种方式第一种:
/**
* private权限,重写get、set
* 好处是隔离变化,提高安全性,但是字段一多,代码会非常长
*/
public class GsonBean {
& & private S
& &
& & private P
& &
& & public static class Person {
& && &&&private S
& && &&&
& && &&&public String getSex() {}
& && &&&public void setSex(String sex) {this.sex =}
& & }
& &
& & public String getName() {}
& & public void setName(String name) {this.name =}
& & public int getAge() {}
& & public void setAge(int age) {this.age =}
& & public Person getPerson() {}
& & public void setPerson(Person person) {this.person =}
}复制代码第二种:
* public权限,不重写get、set
* 好处是调用更简单,代码稍少
*/
public class GsonBean {
& & public S
& &
& & public P
& &
& & public static class Person {
& && &&&public S
& & }
}复制代码大家工作中一般用的是哪种解析方式呢,哪种更实用,还有哪些优缺点?
签到天数: 1 天连续签到: 1 天[LV.1]初来乍到主题帖子e币
都一样,不过我自己用第一种,因为对数据进行了封装。
恩恩,封装更安全点&
签到天数: 74 天连续签到: 1 天[LV.6]常住居民II主题帖子e币
第一种& && &
哈哈,这猴子晃得我眼晕&
签到天数: 81 天连续签到: 1 天[LV.6]常住居民II主题帖子e币
直接用工具生成的
有的工具生成不了,比如GsonFormat&
签到天数: 355 天连续签到: 5 天[LV.8]以坛为家I主题帖子e币
都一样,不过我自己用第一种,因为对数据进行了封装。
恩恩,封装更安全点
签到天数: 355 天连续签到: 5 天[LV.8]以坛为家I主题帖子e币
哈哈,这猴子晃得我眼晕
签到天数: 355 天连续签到: 5 天[LV.8]以坛为家I主题帖子e币
直接用工具生成的
有的工具生成不了,比如GsonFormat
签到天数: 201 天连续签到: 1 天[LV.7]常住居民III主题帖子e币
alt+insert````````````````````
签到天数: 179 天连续签到: 1 天[LV.7]常住居民III主题帖子e币
先收藏下 日后研究
签到天数: 179 天连续签到: 1 天[LV.7]常住居民III主题帖子e币
要不要先收藏下 可能日后会用到哦
推荐阅读热门话题
61886420384328283281261252226218208204201192715
半小时前昨天&23:48昨天&18:10昨天&18:06昨天&17:57昨天&17:55昨天&17:42昨天&15:01昨天&15:00昨天&14:57昨天&14:51前天&23:56前天&16:04前天&14:14前天&09:20前天&07:40
Powered by

我要回帖

更多关于 ios开发中fmdb的使用 的文章

 

随机推荐