Android各种常见异常及处理----未完成

1:ArrayAdapter.add()和ArrayAdapter.remove()方法UnsupportedOperationException

原因:因为创建ArrayAdapter时候没有给他分配一个ArrayList
另外主要是因为系统官方API没有这个方法,解决不了可以考虑不用

解决方法:先创建一个ArrayList

List < CharSequence ]]> planets = new ArrayList < CharSequence ]]> (); 
再用这个ArrayList去创建ArrayAdapter
adapter = new ArrayAdapter < CharSequence ]]> (context, R.array.planets_array, planets);

2:使用Fragment时遇到Binary XML file line #9: Error inflating class fragment

解决方法:

fragment加入的Activity 应该继承于 FragmentActivity


3:java.net.SocketException:Noroute

原因:wifi未打开,无路由
解决方法:wifi未打开,重新打开

4:java.net.SocketException: Permission denied (maybe missing INTERNET permission) 

原因:网络权限未添加 -- 常见的权限未添加异常
解决方法:添加网络请求权限
<uses-permission android:name="android.permission.INTERNET" /> 

5:java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

原因:不能在线程中操作主线程,比如在线程中创建dialog,更新UI等都是不可以的
解决方法:在主线程中创建handler,通过handler.sendmessage()来更新UI,因为在主线程中创建的handler属于主线程,起所有handlemessage操作都是在主线程中执行

6:java.lang.IllegalArgumentException: The key must be an application-specific resource id.6

原因:应该是R.id.xxx 被替换成了1,2,3这种常用数字,id不唯一
解决方法:使用R.id.xxx

7:NetWorkOnMainThreadException

原因:在Android2.3以上版本中--网络请求需要在放在线程中,目的是为了防止阻塞UI线程,当网络请求在UI线程中时会抛出该异常
解决方法:将网络请求放在线程中

例1:放在new Thread中 new Thread(new Runnable()).start;
例2:新建内部AsyncTask类


8:java.io.FileNotFoundException: /open failed: ENOENT (No such file or directory)

原因:要打开的File不存在
解决方法:新建该文件


9:java.lang.RuntimeException: Unable to instantiate receiver xxxxxx(your receiver name):
java.lang.InstantiationException:can't instantiate class xxxxx(your receiver name) ;no empty constructor

原因:当使用BroastcastReceiver 构造函数中会传入参数时,此类BroastcastReceiver 不能在AndroidManifest.xml中声明,因为Receiver构造函数中参数会为空值,导致下列异常产生,需要动态绑定BroastReceiver
解决方法:

you receiver class = new you receiver class(getActivity().getApplicationContext());

IntentFilter intentFilter = new IntentFilter();

//添加过滤条件

intentFilter.addAction(InfoReceiver.NEWMESSAGE);

intentFilter.addAction(InfoReceiver.NEWSERVICEORDER);

getActivity().getApplicationContext().registerReceiver(your receiver, intentFilter);





  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值