zoukankan      html  css  js  c++  java
  • 在Andorid开发项目中遇到的Bug记录(续)

    [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:eclipseadtsdkextrasandroidsupportv7appcompatlibs的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,问题解决!

    [44]Eclipse中添加TODO标签后,在Tasks列表里面找不到刚添加的内容;

      解决:TODO 后面要接一个空格,TODO 标签后面第一个字最好为中文 不能为英文,我就遇到过这种情况,TODO后面直接英文在Tasks列表里面找不到,这有可能是Eclipse的Bug

    [45] ArcGIS for Android FeatureLayer进行编辑,调用applyEdit方法前必须要把该featureLayer添加到MapView中才能提交成功。在applyEdit的回调方法不在UI线程中执行,所以callback方法里面不要进行UI相关操作,包括弹Toast

    [46] PopupWindow焦点问题:使用按钮弹出popwindow,再次点击popupwindow又重新被打开,原因是点击按钮后popupwindow失去焦点自动hide,如果按钮的onclick事件里面有判断isShowing()状态,那么返回false,故每次都重新创建并popupwindow

    [47]控件设置focusintouchable为true时,第一次点击控件会获取不到焦点

    [48]使用Volly框架里面的Post方法提交数据时,会多次请求url,测试中出现请求失败后会重新再请求一次url或者多次,使用Android API里面原生的HttpPost请求时只会发送一次请求

    [49]Android所有的widget都必须设置layout高宽属性

    [50]ListView设置listSelector后点击Item没有UI变化效果

      解决:设置ListView的drawSelectorOnTop为true,解决ListView设置listSelector属性后选中ListItem无响应的问题,原理是在最上层绘制cacheColorHint解决ListView拖动时的背景色问题,设置为白色全透明即可解决

    [51]Android TextView实现跑马灯 必须设置四个属性android:singleLine="true",以及android:ellipsize="marquee",android:focusable="true"以及android:focusableInTouchMode="true",也就是TextView必须获取到焦点

    [52]TextView设置滚动效果

      解决:在布局里面设置android:scrollbars="vertical";或者在代码里面设置setMovementMethod(ScrollingMovementMethod.getInstance());

    [53]优化布局:ViewStub用法

                         // viewStub=(ViewStub)findViewById(R.id.taskinfo_more_stub);

                         // viewStub.setLayoutResource(R.layout.task_xgd_layout);

                         // if (viewStub!=null) {

                         // View moreDetailView=viewStub.inflate();

                         // }

    [53]Content has view with id attribute 'android.R.id.list' that is not a ListView

      解决:使用了继承自ListActivity或者ListFragment的类,布局文件中的ListView控件的id必须设置为‘android:id/list‘,即: android:id="@android:id/list"

  • 相关阅读:
    XML和JSON优缺点
    JSON与XML优缺点对比分析
    json数据格式
    ajax 请求二进制流 图片
    常用网站
    Js setTimeout 用法
    js Indexof的用法
    02_虚拟机的安装和SecureCRT、FileZilla、Xmanage、UltraEdit工具的介绍
    01_Hadoop学习笔记内容说明
    sudoers文件设置sudo命令无密码(root密码)登录
  • 原文地址:https://www.cnblogs.com/David-Young/p/4451434.html
Copyright © 2011-2022 走看看