今天老大又不在,不过鸭梨依然很大。先把问题给大家描述一下:
- ofbiz是一个极为庞大的系统,集成了各种你能想到的企业管理工具。系统内部的信息传递主要是通过XML,所以他们要求服务器向Android客户端发送信息时也使用XML。我的任务是把XML中的信息转换成对应的Activity,也就是说动态地生成各种View并显示到手机屏幕上。但是习惯上Android程序总是提前在xml文件里定义好页面布局,在运行时加载一下就好了,所以这个任务我还是花费了一些时间搜索。涉及到了LayoutInflater, addView, ViewStub等相关的知识。
- 另一个麻烦事是,我们希望用ofbiz目前使用的一系列类库来解析xml,但是在导入的时候引来了一堆问题。比如总是提示“找不到类定义”等等。由于我不熟悉这一部分,所以留给boss做就好了~
今天学习的相关知识有:
- link to class failed,NoClassDefFound error. 这是引入外部类库后遇到的错误。虽然做了引入工作,编码时也没问题,但是并未在运行时被识别。查阅资料后发现:ADT的升级会导致这一问题,升级后若想引入外部包需要把他们放在libs文件夹中而不能把文件夹取名为lib。可惜这也没能帮助我,希望对大家有用。
- 一直以为url是不区分大小写的,原来不完全是这样。url标准据说是要求小写的。但是在linux或apache服务器中好像是区分的。
- 在屏幕上显示一个简易的提示消息:Toast.makeText(...).show;
- 从零开始创建View也不是特别难。用new的方法实例化相关的view然后把他们加(父控件.addView)到父控件(比如LinearLayout)里就好了。xml中涉及到的属性都有相应的方法可以设置。
- 也可以使用LayoutInflater来生成layout,然后通过getChildById来获得相关子控件并设置属性。使用getLayoutInflater来获得一个LayoutInflater的实例。可以放狗搜索相关代码。
- 很多涉及到ui的操作需要在主线程做,比如Toast。使用runOnuithead。
- viewstub标签layout的xml文件中使用,可以在运行中被动态生成(inflate)并完全被它所代表的view替换。详情放狗。
- pd=ProgressDialog.show(this,"title", "Chargement", true); 显示一个进度条/loading环。true代表时间不确定,可以使用pd.dismiss终止。在调用它之后请在一个新线程中做耗时的工作,在工作结束时的代码里dismiss进度环。如果都在同一线程的话,进度条并不能马上显示。要知道这个任务也是要在主线程队列里排队的。
- 想使用标签页?对于比较旧的api(我的是8,对应android2.2吧),查询tabhost。好像从3.0开始推荐用ActionBar.
最后需要说的是,我还是新手,在这里一方面跟大家分享一下自己学到的东西,一方面也是在记日记。所以如果大家发现有用的东西一定要查证一下再用,别被我误导啊!发现问题请留言,非常感谢!
大家加油,共同进步。