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);