开发新浪微博时的遇到的一些问题总结与解决办法:
微博开发几个重点
1.在用json解析时候 得到某个数据 最好用optString("");
optString("");如果有值 则返回值 没有 则返回 一个空字符 避免异常的发生
2.纵观其他微博,都 是让用户先看到界面然后一个和progressBar的东西一直在加载数据
所以 最好 实现 异步加载数据 让UI线程先执行完 然后通过Handler去更新组件
3.在listview中如果 有button,imagebutton等控件 那么listview是无法 获取响应setOnItemClickListener这个监听方法
解决办法 :
在Listview子项根布局中 加入android:descendantFocusability="blocksDescendants"这个代码
4.
如果在一个静态类中定义一个集合 那么要在别一类中赋值给集合 用
OtWeibo.uids = newArrayList<String>(Arrays.asList(info.split(","))) ; 构造函数的方法
如果用 OtWeibo.uids = Arrays.asList(info.split(",")) ;系统将会报异常
5.使用android自带邮件发送时注意:使用
intent.putExtra() 来置入寄件入(EXTRA_EMAIL)、主题(EXTRA_SUBJECT)、
邮件内容(EXTRA_TEXT)以及其他Email的字段(EXTRA_BCC、EXTRA_CC)。
intent.setType("text/plain");//模拟器请使用这行
intent.setType("message/rfc822"); // 真机上使用这行
6.如果何在button中设置图片:图片在左边的效果
button有一个xml属性:android:drawableLeft="" 通过这样能设置一个图片在左边 然后右边可以写text值
7.摄像头捕获的画面由surfaceview控件来定义
只有surfaceview被创建后摄像头画面通过它 才能传到界面上
平时开发时遇到的一些问题及解决办法:
1. 在适配器中,button是无法通过映射到adapter中的。
2.在android中我们常用到自定义的布局,自己重写view组件在重绘图片时要注意 在非UI线程中用myView.postInvalidate() ;
这个方法,但是这个myview对象如果你又重新定义了 如:myview = new Myview(); 这个时候 你调用 它myView.postInvalidate() ;
这是不会调用ondraw();方法的 因为setContentView(myView);这个方法已经设置了布局 所以你必须还要重新设置布局。setContentView(myView);
3.上下文对象的实例化过程:context:这个对象是在实例化对象以后 也就是instance已经被创建的时候,才setContext.如果在实例
化对象之前调用this.getContext()它会是空指针。
4.在进行单元测试时常常会遇到的问题:
Unable to findinstrumentation target package:
这是因为在配置清单文件时根mainfest里的包package="com.example.db.activity"必须和目标包android:targetPackage="com.example.db.activity"
保持一致 否则会报这个错误。
5.在布局文件中。可以使用自定义的文件 ,但是要继承view这个类 在布局文件中的时候声明< 包.类名/>
6.在数据适配器中,当我们使用simpleCursorAdapter时,我们一定要注意的一个是"_id",如果 我们数据库中的id字段不是"_id",
那么就会报错,解决办法有两种:
第一种:修改字段的id为"_id" ;
第二种 :在返回一个Cursor时。可以把数据的id字段修改为"_id" ;如:select personid as _id * from table;
7.在清单文件(AndroidManifest.xml)中无法自动提醒问题:
1.首先判断ADT 和SDK是不是一个版本的。
2.如果1没问题 就在打开AndroidManifest.xml时是 点击AndroidManifest.xml右键->OpenWith->Android Manifest Editor。然后就有了。。哈哈。终于解决。
8.在一个jsp中如果返回的页面数据是一个xml数据
<%@page language="java" contentType="text/xml; charset=utf-8" pageEncoding="utf-8"%><?xml version="1.0" encoding="utf-8"?> ${data} |
Data:是一个xml数据
这是一个很简单的例子吧。可是我就遇到一个奇葩的问题,我用http://localhost:8080/androidtest这个地址访问是没有一点问题的,但是我用我的Ip地址http://192.168.1.12/androidtest访问结果就出现空白页面,什么都没有,我查遍网上资料,结果偶然发现原来<?xmlversion="1.0" encoding="utf-8"?>这个xml声明头必须得与jsp声明头放在同一行。这个问题硬是让我卡了半天,希望同僚们看到不会出现这个错误了。