Android 笔记之异常记录

Android 笔记之错误记录

前言——好记性不如烂笔头,记录Android学习过程中遇到的各种问题BUG。O(∩_∩)O

错误1 ——

Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x0

错误原因——一般是int 型数据赋给String ,然后让TextView显示就会出现如上错误。

解决办法——用String.valueOf 或者在int数据后加“” 

错误2——

在布局文件中,文本的设置使用如下写法时会有警告:Hardcoded string "下一步", should use @string resource
[html] view plaincopy
  1. <Button  
  2.         android:id="@+id/button1"  
  3.         android:layout_width="118dp"   
  4.         android:layout_height="wrap_content"  
  5.         android:text="下一步" />"  
虽然可以正常运行,但会出现警告,终究这不是一个好习惯。

解决办法——应该在res/values/strings.xml中设置:

[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <resources>  
  3.     <string name="message">下一步</string>  
  4. </resources>  
引用的时候使用
android:text="@string/message"
就行了。这样做可以做到一改全改,在支持多语言时也是很有用的。另外,颜色的设置也最好在color.xm中类似设置。

错误3——

在打开低版本的工程时出现如下错误,
[2013-12-13 17:39:11 - SerialDemo] Unable to resolve target 'android-10'

解决方法—— 在project.properties 文件里把10改成常用的比较新的就不会了。目前是15就可以了,最新到19。


错误4——

API level 11 (current min is 8): new android.widget.SimpleCursorAdapte

解决方法——

右键点击项目->Android tools ->Clear Link Markers.即可临时解决,但是如果调试用的模拟器是低版本的,则在调试完后还有这个错误。

  如果把manifest文件中的user-sdk的android:minSdkVersion改为报错的那个高版本就没事。比如下面:

<uses-sdk

        android:minSdkVersion="11"   //这个之前是8

        android:targetSdkVersion="17" />

错误5——

问题:Description Resource Path Location Type

Unparsed aapt error(s)! Check the console for output. Bundle_Test line 1 Android ADT Problem

解决方法——

layout 文件名只能在小写的26个字母和数字0~9中选取. 因此,我们的文件名中有大写字母就会报错.

而造成上述原因是因为我新建了一个xml文件,命名为Receiver.xml   

因此把名字改为小写就好了。

错误6——

08-16 09:06:45.018: W/dalvikvm(2286): VFY: unable to resolve static method 3273: Lorg/slf4j/LoggerFactory;.getLogger (Ljava/lang/Class;)Lorg/slf4j/Logger;
08-16 09:44:13.617: W/dalvikvm(4731): VFY: unable to resolve static method 2649: Lcom/nostra13/universalimageloader/core/ImageLoader;.getInstance ()Lcom/nostra13/universalimageloader/core/ImageLoader;

threadid=1: thread exiting with uncaught exception (group=0x4001d800)

解决方法——

buildpath->Order and Export->select All

错误7——

[2014-01-07 17:32:50 - Dex Loader] Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.
[2014-01-07 17:32:50 - Beian] Conversion to Dalvik format failed: Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.
解决方法——

 单击工程右键,打开build path ,configure bulid path ,把下面这个Dependencies 这个由于加载外面工程而生成的依赖包给删除掉。就好了。!!!

错误8——

java.lang.IllegalStateException: attempt to re-open an already-closed object

问题原因——

因为我在一个数据库查询方法中调用了另一个数据库查询方法,我的数据库查询方法都是在开始的时候获取SQLiteDatabase对象,在结束的时候关闭SQLiteDabse对象,结果内部的数据库查询方法在结束的时候直接关闭了SQLiteDatabase对象,导致外面的数据库查询操作报错,在这里大家不要以为多获取了几个SQLiteDatabase对象就可以了,每个线程只能使用一个SQLiteOpenHelper,也就使得每个线程使用一个SQLiteDatabase对象(多线程操作数据库会报错);

解决办法——我不再关闭内部数据库查询方法的SQLiteDatbase对象或者将那个方法直接集成到外面的查询方法中,当然,要确保这个查询方法只会出现其他数据库查询方法中,要是单独用这个方法,反而会因为SQLiteDatabase对象没有关闭而报错

错误9 ——

Description Resource Path Location Type
The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class files WelcomeActivity.java /BabyBayCar/src/com/example/babybay line 1 Java Problem

Android 笔记之异常记录

解决办法——

打开eclipse 好好的工程就突然出现上述错误了。  这个问题的出现是因为你可能有两个workplace ,但是某一个你突然删掉了,eclipse 就没找到它,于是报以上错误。
解决办法是: file -> 转换workplace -> 切换到另一个workplace,然后重启 eclipse 就好了。

错误10——

当ListView 中使用了 CheckBox 或者Button 时,点击子项会没有反应,解决办法如下:
默认情况下,这些子控件有现货的焦点focus,而ListView的Item能被选中的基础是它能获取Focus焦点,所以,我们可以通过将ListView中Item中包含的所有控件的focusable属性设置为false,这样ListView的Item就自动获得了Focus焦点的权限,也就可以被选中了,同时也会响应onItemClickListener中的onItemClick()方法。

解决办法——有两种:
 
方法一:
将ListView的list_item中的所有子控件focusable属性设置为false
 
2.将list_item的根控件设置属性
android:descendantFocusability="blocksDescendants"
list_item就屏蔽了所有子控件获取Focus焦点,不需要list_item中的每一个控件设置focusable属性为法律色

后记——不好意思,写得有点凌乱,这些都是我调试时候遇到的问题,部分问题的解决办法是参考网友的。