问题集锦
1、viewpager
用到了ViewPager,Android5.0.1,却额外在Build Path中引入了v4jar包,并且在“Order and Export”中勾选了此jar包,编译时出现错误: [2014-09-28 23:49:30 - Dex Loader] Unable to execute dex: Multiple dex files define Landroid/support/annotation/AnimRes; [2014-09-28 23:49:30 - Shop] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Landroid/support/annotation/AnimRes; 在Build Path的Order and Export勾掉v4jar包即可。
2、tabhost,id设置的三种方式。
问题描述:在tabhost布局中,对于id仍然使用了普通的id设置方式android:id="@+id/tabhost",程序报错。此处应使用android自带的id,android:id="@android:id/tabhost"
android:id设置的三种方式:http://yulongsheng.blog.51cto.com/3804293/1256541
3、非UI线程中更新UI时产生的异常
android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
解决方法:handler
4、类的实例化
自定义的一些类,在其他类中使用时有时会忘记实例化(如数据库DBHelper啥的),报异常,妈蛋啊,长点心。调用类的方法时,先获取其实例化对象
5、函数注释
写的每一个函数把注释写详细,包括返回格式,比如返回日期,其格式。
6、代码的梳理
一个工程,写的越多就乱起来了,建包,并归类好
7、项目导入时报错:The import javax.servlet.http.HttpServletRequest cannot be resolved
转自:http://yl-fighting.iteye.com/blog/1409468
Error:
The import javax.servlet cannot be resolved
The import javax.servlet.http.HttpServletRequest cannot be resolved
Description:
我们经常会把别人的项目copy到自己这里进行二次开发或者参考,有的时候会发生上面的错误,
即eclipse项目里我们导入的项目里提示HttpServletRequest 不能引用,会伴随头疼的小红叉出现。
Accuse:
具体原因是我们工程里面web-inf/lib目录下少了相应的包:Package javax.servlet.http引起的;
通俗且确切的讲就是缺少TOMCAT_HOME\lib下的servlet-api.jar。
我导入别人的项目,在别人的机器上他配置了Server,一般都是tomcat,而在拷贝的过程中Server的那些library是不会随项目一起拷贝过来的,除非别人把tomcat的library已经拷贝到WEB-INF\lib下了。
Action:
Project -> Properties -> Java Build Path -> Add Library -> Server Runtime -> next -> 选择你的Server -> Finish
8、程序出错的一些小问题
(1)主配置文件是否对相关组件进行注册
(2)是否需要相关jar包
(3)动态加载布局,并在此布局中获取控件时,调用findViewById时给出其view,如下
//注意此处是获取动态加载的界面中的button,漏掉view会出错
Button mBtnGoMain = (Button) view.findViewById(R.id.btn_gomain);
(4)类的实例化
(5)更改包名时,主配置文件别忘修改
(6)及时测试,早发现早解决
9、
1 /** 2 * 获取指定日期的支出列表,放入list中 3 * @param tableName 4 * @param theDate 5 * @param mList 6 */ 7 public void getDayList(String tableName, String theDate, List<ListItemBean> mList){ 8 9 //List<ListItemBean> mList = new ArrayList<ListItemBean>(); 10 11 SQLiteDatabase db = this.getReadableDatabase(); 12 String the_sql_sel = "select * from " + tableName + 13 " where " + EXPENSE_TIME + " like '%" + 14 theDate + "%'"; 15 Cursor cursor = db.rawQuery(the_sql_sel, null); 16 17 //ListItemBean mListItem = new ListItemBean(itemShortDate, itemLongDate, itemWeek, itemImageResId, itemCategory, itemMoeny); 18 19 cursor.moveToFirst(); 20 while (!cursor.isAfterLast()) { 21 22 //注意把此步骤放进循环体内,否则mList中存储的均是最后一个条目,因为mListItem是类对象,指向一个内存地址 23 ListItemBean mListItem = new ListItemBean(itemShortDate, 24 itemLongDate, itemWeek, itemImageResId, itemCategory, 25 itemMoeny); 26 27 //String date = cursor.getString(cursor.getColumnIndex("expense_time")); 28 String date = theDate; 29 30 mListItem.itemLongDate = cursor.getString(cursor.getColumnIndex("expense_time")); 31 32 //日期格式化,只显示月和日 33 mListItem.itemShortDate = dateFormat(date); 34 35 //获取日期对应的星期几 36 mListItem.itemWeek = getWeekfromDate(date); 37 38 //暂时的哈,稍后找几个好看的图片 39 mListItem.itemImageResId = R.drawable.ic_launcher; 40 41 mListItem.itemCategory = cursor.getString(cursor.getColumnIndex("expense_category")); 42 mListItem.itemMoney = cursor.getFloat(cursor.getColumnIndex("expense_money")); 43 44 45 mList.add(mListItem); 46 47 //System.out.println(mListItem.itemMoney); 48 49 cursor.moveToNext(); 50 } 51 52 cursor.close(); 53 54 //return mList; 55 }