现在的位置: 首页 > 综合 > 正文

Android错误记录

2014年06月13日 ⁄ 综合 ⁄ 共 2475字 ⁄ 字号 评论关闭

在此记录一下android开发过程中遇到的错误,以备今后的查阅。


错误1:Android: R cannot be resolved to a variable

原因:自动生成的R文件被删除或不完整

解决方法:

  1. 检查Android 的SDK是否丢失,需要重新下载,检查build path

  2. 确保class没有import
Android.R

  3.错误class引用的layout的xml文件没有错误,xml文件名没有大写字母(这个是我一直在犯却一直记不住的错误)

  4. 检查AndroidManifest.xml文件,里边的package,layout配置文件,strings.xml等的字符串全部书写正确

  5. layout的xml文件中引用的strings.xml中的字符串拼写完全正确

  6.在layout 的xml文件添加一个控件,看id能否在R.java中自动生成,如果不能,那很大可能就是这个layout 的xml文件有问题,查看格式是否使用正确,或者包含什么非法字符串,或者调用到了不正确的字符串等等,可以使用排除法,挨个去掉控件,直到发现error
message消失或者id能在R.java中自动生成。

  7.删掉gen文件夹,使R.java重新自动生成一次,如果不能生成,继续检查layout的xml文件是否有如上不易发觉的问题

  8.Clean project ,重新build,或者重新import project

  9.重启eclipse

  10.重启电脑,以防Android 虚拟机的问题


错误2:gson格式化日期不规范导致javascript无法解析日期的问题

解决方法:Gson gson = new GsonBuilder().setDateFormat("yyyyMMddHHmmss").create();


错误3:android.content.res.Resources$NotFoundException:String resource ID #0x86

原因:给一个控件设置文本属性时,属性值必须为字符串

解决方法:源代码为textview.setText( item.getName()); 虽然item.getName()方法返回的是String类型但还是报上面的错,抱着试试的心态将代码改为textview.setText("" + item.getName());  就不报错,不知道为什么。


错误4:android.database.CursorIndexOutOfBoundsException:Index -1 requested, with a size of 1

原因:游标cursor的下标是从-1开始的。

解决方法:cursor.moveToNext();


错误5:error inserting:column id is not unique

原因:在SQLite中插入数据时如果违反了unique约束就会报上面的错误

解决方法:采用insertWithOnConflict(String table, String nullColumnHack, ContentValues initialValues, int conflictAlgorithm)方法,通过最后一个参数conflictAlgorithm来定制冲突发生时的解决方法。


错误6:android java.lang.IllegalStateException:database not open

原因:没有将数据库打开,即在操作数据库之前调用了db.close(),或者未通过getWritableDatabase()或getReadableDatabase()获取SQLiteDatabase对象。

解决方法:注释掉db.close(),调用getWritableDatabase()或getReadableDatabase()。这个错误是在第二次打开app时产生的,我一直找不到错误原因,因为db.close()是在主activity的onDestroy()中调用的。后来我才发现我将DBHelper设为单例模式,只在第一次创建DBHelper对象时才通过getWritableDatabase()或getReadableDatabase()获取SQLiteDatabase对象,在每次调用DBHelper时获取SQLiteDatabase对象就将错误解决了。


错误7:The import com.google can not be resolved

原因:build target应该选择Google APIs而不是Android APIs

解决方法:右键项目名称 -> 属性 -> Android,在Project Build Target中选择相应的Google APIs

错误8:Binary XML file line #6: Error inflating class com.example.mymapdemo.MyMapView

原因:1.XML文件的第6行,引用自定义控件的包名错误

       2.自定义控件中的构造函数错误。

解决方法:

  1.引用自定义控件在XML文件中作为布局元素时必须使用控件的完整路径名称,即包名+类名。如果使用ctrl+鼠标点击可以跳转到控件定义的地方,就是正确的引用。

  2.自定义View必须实现基类View的三个构造函数:

    View(Context context)  //Simple constructor to use when creating a view from code

    View(Context context, AttributeSet attrs)  //Constructor that is called when inflating a view from XML

    View(Context context, AttributeSet attrs, int defStyle)  //Perform inflation from XML and apply a class-specific base style

    第二个和第三个构造函数对于使用XML文件inflate的View是必须实现的。


抱歉!评论已关闭.