本文是自己在用Android Studio的使用过程,所遇到的一些个人觉得比较有价值的问题,特此记录。
总结几点感触:
== 1.正确的理解日志的内容很重要
== 2.分析问题时要有一个清晰的思路,避免乱撞。
一、Nine-Patch 图片
问题:导入xxx.9.png文件后,使用该文件时报错:
解决:问题的关键出在图片本身,在AS下双击该图片文件,对图片再进行编辑,注意理解四条线的意思
二、UnHandled exception
问题:UnHandled exception:java.io.IOException
原因:进行try/catch的时候catch的是FileNoFound Exception,不能处理此处的异常
解决:AS快捷键 Ctrl+Alt+T
三、IllegalArgumentException:Unable to locate adb within SDK
问题:Unable to locate adb within SDK
分析:应该是Android SDK Platform-tools 出了问题,打开SDK Manager 查看
解决方案:应该是没装Android SDK Platform-tool...安装即可
四、建立aidl文件,生成对应Java文件
- 创建aidl文件后,make project 出现错误'F:\Android\android-sdk\build-tools\23.0.1\aidl.exe'' finished with non-zero exit value 1
- 在aidl文件中导入自定义的类后,import class not found
正确思路:
先在main目录下新建一个文件夹,命名为aidl,再在该目录下新建一个包,包名跟AndroidManifest中的package同名,然后在该包下创建aidl文件,创建完之后,make Project下,在build/generated/source/aidl/debug下就可以见到自动生成的java文件
五、Plugin is too old, please update to a more recent version......
分析:google了一下,问题定位到了下面这个位置 'com.android.to ols.build:gradle:2.1.0-alpha4',根据提示,可能是这个不是最新的Plugin
解决方法:http://stackoverflow.com/questions/29063968/plugin-is-too-old-please-update-to-a-more-recent-version-or-set-android-daily#comment46364169_29064084
将 'com.android.tools.build:gradle:2.1.0-alpha4'
替换成 'classpath 'com.android.tools.build:gradle:+'
六、Attempt to invoke virtual method‘xxxxxxx’ (java.lang.CharSequence)' on a null object reference
问题如图:
日志指向:
错误分析:
--- 根据日志可知,报错语句是tv_title.setText(tv_content[xx]); 原因是NullPointerException:
--- 那么,两种可能:1. tv_title为空 2. tv_content[]为空
经测,数组tv_content[]不空,则控件对象 tv_title空指针
这种情况下也有两种可能:1.对象用错了 2.没有初始化 findViewById (一般后者比较常见,但此处是前者。。)
十、Cause: com/android/build/gradle/AppPlugin : Unsupported major.mi nor version 52.0
解决方法:将项目所用的jdk版本调高 1.7改成1.8
十一、JSON解析遇到的问题
如:Excepted BEGIN_OBJECT but was STRING at line1 column1......
正确解读意思:你以为它一个JSONObject对象,但实际它是String类型的
十二、FATAL EXCEPTION: main Process: com.example.mml.huaerjietest, PID: 9779 android.content.res.Resources$NotFoundException: String resource ID #0x5
问题原因:此处括号里返回的是一个int类型的值,setText(int xx)报错:
日志原因:setText( )方法有几个重载的方法,比如
---------- textView.setText(CharSequence text);
---------- textView.setText(int resId);
如果不小心将一个int值传给了它,那它不会显示该int值,而是跑到工程下去找一个对应的resource的id,当然是找不到的,于是就报错.....
来源:http://blog.sina.com.cn/s/blog_5e58565701012ox7.html
网友评论