码迷,mamicode.com
首页 > 其他好文 > 详细

在Andorid开发项目中遇到的Bug记录(续)

时间:2015-04-23 19:52:38      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:

[22]遇到query cannot be resolved to a variable错误,

解决:1.Java里面定义的变量不能跟系统包里面的关键字相同(大小写不同也不行),系统包里面有个Query,把query改 2.变量在方法中是否被定义为局部变量,从而不能作为方法的返回值成其他名字即可

[23]Unable to execute dex: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl

解决:

[24]java.lang.reflect.InvocationTargetException

解决:

[25]java.net.ConnectException: failed to connect to /***.***.***.***(port 80): connect failed: EHOSTUNREACH (No route to host)

解决:网络虽然连接,但是网络阻塞,断开重连

[26]android.widget.TextView cannot be cast to android.widget.CheckBox

解决:布局文件中TextView控件被覆盖,

[27]java.lang.RuntimeException: Parcel: unable to marshal value {CLASSNAME}

解决:用Intent跳转Activity时,出现这个错误,intent.putExtra("siteInfo", (Serializable)listSiteInfo);这行代码调试通过,但是不能实现跳转,抛出错误,原因是listSiteInfo是我自己定义类型为SiteInfo的一个Arraylist,SiteInfo这个类必须要继承Seralizable,才能转换成(Serializable)类型。

[28]在监听事件里面执行异步类AsyncTask的代码,如果想要将异步类执行后的结果获取到,然后在监听事件里面继续执行后面的代码,这是不可取的,因为异步类AsyncTask和你的监听之间后面的代码同时运行,如果后面的代码需要用到异步类里面返回的结果后再执行,是不行的,因为等异步类里面的代码执行的时候,监听事件里面后面的代码可能已经执行完了,所以最好是把后面需要执行的代码写到AsyncTask异步类里面的PostExecute里面执行

[29]android.view.WindowManager$BadTokenException: Unable to add window -- token

解决:导致报这个错是在于new AlertDialog.Builder(mcontext),虽然这里的参数是AlertDialog.Builder(Context context)但我们不能使用getApplicationContext()获得的Context,而必须使用Activity,因为只有一个Activity才能添加一个窗体。 将new AlertDialog.Builder(Context context)中的参数用Activity.this(Activity是你的Activity的名称)来填充就可以正确的创建一个Dialog了

[30] java.lang.RuntimeException: Unable to instantiate activity ComponentInfo异常

解决 不能实例化activity有如下三种情况: 1.没有在Manifest.xml 清单中注册该activity,或者在创建完activity后,修改了包名或者activity的类名,而配置清单中没有修改,造成不能实例化。 2.自己新建了一个包,而注册时候依然用的默认包,例如,默认包是com.ghg.Dao包,你新建了一个com.ghg.DaoImpl包,并在此包中写了个FirstActivity,在manifest.xml中注 册时你写的是<activity  android:name=".FirstActivity"/>,此时相当于你在的类注册到了默认包中,系统在默认包中是找不到的,因为你的FirstActivity在com.ghg.DaoImpl包 下,所以你注册时应写成包名加类名,如:<activity android:name="com.ghg.DaoImpl.FirstActivity";这样系统才能在指定的包中找到对应的类。 3.还用一种就是你的FirstActivity定义成了抽象类,这种情况好像一般人不会犯。 如果上述三种情况都考虑到了,还会抛出此异常,那么就查看一下activity类里是否同时存在这个类的构造函数和oncreate(),如果是,那么删除构造函数试试,并把初始化放到 oncreate()中试试。

[31]android.content.res.Resources$NotFoundException: String resource ID #0x0 找不到资源文件ID #0x0

原因分析如下: 遇到这种情况,很有可能是把一个int型业务数据的 设置setText()或者类似的方法中, 这样Android系统就会主动去资源文件当中寻找, 但是它不是一个资源文件ID, 所以就会报出这个bug。 将int型业务数据,转换成String类型即可。

[32]使用Spinner控件时,必须要给spinner绑定数据,否则报空指针的错误,空值

[33.]不显示系统菜单

解决:把manifest中的android:targetSdkVersion去掉,看看显不显示menu

[34]使用最新版本的androidsdk(4.x)和adt插件时,新建android工程时红叉和感叹号 使用adtbundle 20150202版本,最低版本选4.0以上

[35]eclipse的 Invalid project description. overlaps the location of another project

解决:下载工程时把该工程放在了workspace目录下。eclipse插件在创建项目的时候需要在workspace目录下创建一个同名的目录。 但发现workspace目录下已存在对应的目录时,就会报上面的处错误信息了,把项目拷贝到其他文件及再导入

[36]多媒体应用开发,用Intent调用手机摄像头拍照和摄像时,如果在传Intent时指定了MediaStore.EXTRA_OUTPUT的Uri(文件保存位置),那么在onActivityResult里面返回的data的可能为null

解决:这是不同手机机型的问题,方案:1,不手动指定保存路径,让系统自动默认保存 2.手动指定路径,声明一个全局变量uri保存路径,在onActivityResult里面不能用data.getData()方法获取uri

[37]使用fragment里面的控件绑定onclicklistener点击事件无效

解决:使用fragment或者fragmentactivity时,为在继承fragment类的自定义类里面的控件设置点击事件监听必须要在fragment那个类里面的onActivityCreated方法里面去给控件绑定监听,在fragmenet类里面可以用getactivity()方法获得fragment所在的activity

[38]解除EditText控件自动获取焦点

解决:在EditText的父控件中设置focusable和focusableintouchmode为true

[39]error: Error parsing XML: unbound prefix

解决:自定义控件在attrs.xml添加自定义属性时,在布局文件中使用自定义控件,标签名应该为自定义控件所在的包名加上类名,另外,还要在引入自定义控件的xmlns命名空间(xmlns:自定义属性名="http://schemas.android.com/apk/res/包名"(主类所在包名/自定义控件类包名?)

[40]java.lang.NoClassDefFoundError: android.support.v4.view.MotionEventCompat

解决:android.support.v4.util.SparseArrayCompat,这个问题很奇怪,JAR包也有了,编译也通过了。但就是运行时出现类找不到的问题。NoClassDefFoundError这种错误一般就是对应的类,没有被包含在对应的APK里面。 而MotionEventCompat这个类属于android.support.v4扩展库.检查了一下项目Libraries目录,发现没有引入这个包,右键项目属性-BuildPath-Libraries-Add External Jar,找到adt插件文件下面的D:\eclipse\adt\sdk\extras\android\support\v7\appcompat\libs的v4包,然后在order and Export里面给v4勾上,问题解决.(低版本的adt,右键项目属性,把【Android Private Libraries】前面的勾选中,再clean工程,再编译运行)

[41]Unable to execute dex: Multiple dex files define Landroid/support/annotation

解决:在项目中,有一个类的包名和引用的jar包中的类和包名一致,我用的是jar包中的类,所以工程中的这个类就是重复引用的,删除工程中重复引用的类后,成功打包启动

[42]布局文件A中,使用<include layout="@layout/mylayout"  />标签时,可以通过A直接findviewbyid找到mylayout上的控件并设置监听事件,而使用mylayout的view去对mylayout里面的控件绑定事件是无效的

[43]在百度地图上面覆盖一个布局文件,在地图上的布局文件中去拖动地图时,地图也会随之移动,效果很不好,只想在触摸地图界面时才能让百度地图移动 解决:试过一些办法,setfocusable ,setfocesableintouchmode,听了群里一位网友的建议采用framelayout,都不起作用,后面突然想到,在可点击的控件上面去视图拖动地图,地图不会动,于是,我把所有覆盖在地图上面的布局文件的父布局设置clickable属性为true,问题解决!

在Andorid开发项目中遇到的Bug记录(续)

标签:

原文地址:http://www.cnblogs.com/David-Young/p/4451434.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!