Android异常汇集----常见异常总结(一)
1. 手机内存不足,有可能出现的问题
[2013-03-13 17:32:24 - DBtest] Installing DBtest.apk...
[2013-03-13 17:32:24 - DBtest] Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE
[2013-03-13 17:32:24 - DBtest] Please check logcat output for more details.
[2013-03-13 17:32:24 - DBtest] Launch canceled!
[2013-03-13 17:32:24 - DBtest] Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE
[2013-03-13 17:32:24 - DBtest] Please check logcat output for more details.
[2013-03-13 17:32:24 - DBtest] Launch canceled!
原因是手机内存不足导致的。需要删除部分手机中安装的软件
2.AndroidMainifest.xml找不到activity类
ERROR/AndroidRuntime(483): android.content.ActivityNotFoundException:Unable to find explicit activity class { org.example.sudoku/android.provider.Contacts$Settings};
have you declared this activity in your AndroidManifest.xml
解决办法:在AndroidMainifest.xml中增加activity的申明,如:<activity android:name=".xxxActivity" ></activity>
3.无法使用网络:Permission denied(maybe missing internet permission)
解决办法:在AndroidMainifest.xml中增加允许使用网络选项(在</application>结束标签之后>):<uses-permission android:name="android.permission.INTERNET" />
其他的使用权限,也应该在要使用时到AndroidMainifest.xml添加权限,比如:我们在开发手机蓝牙功能时,就必须添加相应的蓝牙权限。
http://bbs.cloudin.so/article-153-1.html
4. Field requires API level 5 (current min is 1)
解决办法:应该在AndroidManifest.xml中增加API级别<uses-sdk android:minSdkVersion="5" android:targetSdkVersion="5" />
5 . res/layout/Mylayout.xml: Invalid file name: must contain only [a-z0-9_.]
意思是 文件名必须是"小写字母"," 0~9"的数字,下划线" -" 和"." filename不合法必须是按要求的不能出现大写的。6. Caused by: android.view.WindowManager$BadTokenException:
Unable to add window android.view.ViewRoot$W@45fac458 -- permission denied for this window type解决方法:用于添加悬浮窗,在主配置文件中添加:<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />
7. ArrayAdapter: You must supply a resource ID for a TextView
错误使用: ListAdapter adapter = new ArrayAdapter<String>(MainActivity.this,R.layout.activity_main_item,itemview);需要给每个item对应的Textview,添加id。
解决办法: ListAdapter adapter = new ArrayAdapter<String>(MainActivity.this,R.layout.activity_main_item, R.id.main_lv_testview,itemview);
8. Failed to install ***.apk on device '019417a3': Unable to open sync connection!解决方法
当控制台出现:Failed to install ***.apk on device '019417a3': Unable to open sync connection!
java.io.IOException: Unable to open sync connection!
Launch canceled!
或者
Uploading ****.apk onto device '1000b1eda2c2'
Failed to install ****.apk on device '1000b1eda2c2': adb rejected install command with: device offline
com.android.ddmlib.AdbCommandRejectedException: device offline
Launch canceled!
解决方法:
第一种:重启电脑,之后把手机查到电脑上,启动eclipse
第二种:手机-设置-应用程序-开发-usb调试打开再关闭一次
第三种:安装豌豆夹或者360手机精灵在电脑上,用他们连接手机,安装驱动。
第四种:在cmd下Try "adb kill-server" and then "adb start-server"
9. Caused by: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
都知道,Context中有一个startActivity方法,Activity继承自Context,重载了startActivity方法。如果使用Activity的startActivity方法,不会有任何限制,而如果使用Context的startActivity方法的话,就需要开启一个新的task,遇到上面那个异常的,都是因为使用了Context的startActivity方法。解决办法是,加一个flag。Java代码
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
这样就可以再新的task里面启动这个Activity了
10. Caused by: java.lang.InstantiationException: can't instantiate class com.example.smsreceivedemo.MainActivity$SmsReciver; no empty constructor
显然出现了无构造方法解释,同时可以将此内部类SmsReciver定义为static, 应该解决了。11. 运行androd app ,弹框出现 android library projects cannot be launched
Android Library Project 是被引用的,不是独立项目,不能单独启动运行,你需要在 Android 项目的属性中的 Android 分类下面把 "Is Library" 框去掉打勾的,之后它就是一个普通的 Android Application Project 了。
解决方法:http://jingyan.baidu.com/article/636f38bb3df187d6b9461048.html
12. listview 运行时候,出现空指针
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setDrawingCacheBackgroundColor(int)' on a null object reference
at android.widget.AbsListView.obtainView(AbsListView.java:2497)
at android.widget.ListView.measureHeightOfChildren(ListView.java:1286)
at android.widget.ListView.onMeasure(ListView.java:1194)
at com.sjk.client.view.ShopcartListView.onMeasure(ShopcartListView.java:26)
at android.view.View.measure(View.java:17915)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5698)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1692)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:760)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:629)
at android.view.View.measure(View.java:17915)
从网上有人分析跟listview有关,但是我也纠结很久,最终问题是出现在adapter 上 .
先看 布局是否有问题,对应组件id是否 正确写入,然后看下 getView()使用是否有误,我的错误出现在一下:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
view = LayoutInflater.from(context).inflate(R.layout.item_shopcart_goods_layout, null);
public View getView(final int position, View convertView, ViewGroup parent) {
view = LayoutInflater.from(context).inflate(R.layout.item_shopcart_goods_layout, null);
布局加载时候重新用的view ,而不是参数
convertView ,导致的。