Eclipse报错如下:FATAL EXCEPTION: main                                                                    android.app.SuperNotCalledException: Activity {net.reecam/net.reecam.CameraVideo} did not call through to super.onPause()  解决办法:修改Activity生命周期中的Onpause方法,调用基类的onPause()方法。报错前代码如下:protected void onPause()                                            {                                                                                                        }  修改后代码如下:protected void onPause()                                                                                                 {                                                                                      super.onPause();                                                                                                           }    小结:我们对Acitivity的进行管理时,特别是想利用它的生命周期来巧妙进行一些操作时,我们一定要注意,不要随意删改方法自带的调用基类的super.XX()方法,不然就会跟我一样,费力不讨好,不过还好,listview adapter 报java.lang.NullPointerException;.java.lang.NullPointerException         at android.widget.AbsListView.obtainView(AbsListView.java:2035)莫名的报空指针异常。(前提是已经排除数据问题);心里那个烦啊,于是就看adapter,看了好几遍,终于在getview中出现错误了。  getview(...){ return null}。 2.     namespace和url 中 ip、port请尽量填写WIFI或者公网,因为如果你用手机去模拟上传,你的手机是连接不到内网的(如IP:192.168.1.1或 localhost),连接的域名部分不要用IP地址。 3.     注意Webservice服务器的Soap版本如“version=1.0”,所以客户端指定 SoapSerializationEnvelope          envelope   = new SoapSerializationEnvelope(SoapEnvelope.VER10); 4.   String url= "http://134.192.44.105:8080/SSH2/service/IService?wsdl";Url指的是你的webservice的地址.一般都是以***.wsdl或者***.?wsdl结束的...但是.需要注意的是..要去掉后面的.wsdl或者.?wsdl。(这个一般不会有人犯错吧!)。 5. 可能你用了所有方法也不能解决这个问题,这时你就要注意一下你调用的WevService是不是能够被ksoap2解析了。6.XML解析时报错:org.xmlpull.v1.XmlPullParserException: PI must not start with xml (position:unknown ???@1:5 in java.io.InputStreamReader@47ec2770)org.xml.sax.SAXParseException: PI must not start with xml (position:unknown xm@3:5 in java.io.InputStreamReader@43e4b480)是因为XML文件第一行格式错误,仔细修改第一行即可<?xml version="1.0" encoding="utf-8" ?>7.Installation error: INSTALL_FAILED_UPDATE_INCOMPATIBLE .outputandroidcmdInstallation error: INSTALL_FAILED_UPDATE_INCOMPATIBLEPlease check logcat output for more details. Launch canceled!android apk多次安装删除,有的时候可能会遇到adb install错误,网上的解决方法我没看懂,我直接在cmd中敲入: adb uninstall 包名,也成功解决了。对于一些Android开发过程中总有些很坑爹的错误,绕了很大一圈,最后发现是一行代码放错位置,或者少了几句声明等等。3.在调一些网络通信的程序时,我会在PC端写一个服务端java程序,有时还会用到wireshark这个网络数据包分析软件,这个工具可以清楚地看到网络中实际的数据,很方便4.在调试多进程、有关SD等方面的程序时,我偶尔会用DDMS来对程序进行监测以上4点中,我一般用前三种就够了,第4种网上很多人说是什么开发Android必备的,不过我用的很少,可能是我水平还不到家吧问题汇总:1、使用UDP来进行网络通信时,由于其receive方法是阻塞的,对于由发送转为接收模式的应用程序,如果发送请求丢包,则该程序会一直阻塞,而不再发送请求,一个实用的方法是UDP套接字的setSoTimeout();方法,可以设定其接收等待时间,以便超时后再次发送请求,保证其可靠性。2、使用Google的Map-API来进行开发时,<uses-library android:name="com.google.android.maps" />的声明要放在<application></>标签对中,这个是对调用的lib库的声明,不像对授权的声明可以放在<application></>的外面,我就说这里搞错了,然后搞了一天,程序还是打开错误  <application android:icon="@drawable/icon" android:label="@string/app_name">          <activity android:name=".ParkingWorld"                    android:label="@string/app_name">              <intent-filter>                  <action android:name="android.intent.action.MAIN" />                  <category android:name="android.intent.category.LAUNCHER" />              </intent-filter>          </activity>         <!-- 声明需要使用Google Map API -->         <uses-library android:name="com.google.android.maps" />           </application>   3、使用Google的Map-API来进行开发时,遇到地图MapView组件显示网格,并且有“MapActivity:Couldn't get connection factory client”的error,这可能是由于一下几个原因造成:(类似文章可参考http://our2848884.blog.163.com/blog/static/1468548342011625102639660/)a.Google API Key申请。试着用错误的Google API Key运行程序,地图得到的只是空格。key的申请可以参考http://choha.iteye.com/blog/1132841这里为了得到正确的密匙有一点要注意,那就是产生key的方式不同会影响key是否能用,下面的方法我用着可以:在cmd中执行keytool -list -alias androiddebugkey -keystore “你的debug keystore位置” -storepass android -keypass androidb.“INTERNET”使用权限(允许应用程序访问网络)正确添加了如下语句:<uses-permission android:name="android.permission.INTERNET"/>c.使用Google地图的函数库语句正确添加了。 <uses-library android:name="com.google.android.maps"/>,且置于</application>标签前。4、使用DatagramSocket类创建UDP的套接字,使用Socket、SeverSocket进行TCP的套接字通信时,使用完后要记得调用其close方法,否则端口会被一直占用,导致错误;而且close语句的位置也很重要,我在一个activity中要多次使用套接字来发数据,本想使用一个套接字解决问题,在最后的Stop();或者Destory();方法中将其close,但结果行不通,而我创建一个进程,进程每次执行开始创建一个,进程执行结束时套接字close,这样程序就不会报错,且稳定性也不错,对于那些时常需要刷新数据的应用来说很实用。5、使用TabHost时,要注意在TabActivity中不能有setContentView(R.layout.main);这样的设置布局的语句,因为TabHost其本身就是用来设置布局的,否则会产生以下错误:Caused by: java.lang.RuntimeException: Your content must have a TabHost whose id attribute is 'android.R.id.tabhost'6、当你在A工程中调试X.java时,如果你同时在eclipse中有另一个B工程中也有同名文件X.java,则在双击打印出来的错误信息时,eclipse可能会帮你定位到B工程的X.java中,让你看了半天也没找到哪里有错误,这时你可以先把B工程从eclipse删去,再重新双击打印出来的错误信息,eclipse就会帮你正确定位啦。7、java中的乘方运算用Math.pow(底数, 指数);方法,而不使用"^"符号,"^"在java中表示异或。8、在使用TextView的setText方法时,注意其重载性,若要要将int整型作为参数时,编译器认为你的参数是个资源ID,找不到对应的ID时,会出现类似以下的报错:android.content.res.Resources$NotFoundException: String resource ID #0xfe                                       而如果你是要显示这个int型数据,我通常会用  “”+数据  的方法利用“+"符号的重载性,将int数据直接转为String类型。当然,也可以用Integer.valueOf(int i).toString将其转为String类型。9、使用套接字传数据使用以下方法时,虽然String类型中是用char型来存储数据的,但在使用getBytes()方法后,有的数据,比如char型0x0001会变为一个字节的byte型0x01,而不是两个字节0x00和0x01,但很多时候其还是会变为两个字节,比如中文编码。这可以用wireshark抓包来看,当然也可以直接调用类的length()方法,再打印查看。1 byte dataSend[] = str.getBytes();  //把传输内容分解成字节*/3 //创建一个DatagramPacket对象,并指定要讲这个数据包发送到网络当中的哪个、地址,以及端口号4 DatagramPacket packetSend = new DatagramPacket(dataSend,dataSend.length,serverAddress,dstPort);5 //调用socket对象的send方法,发送数据6 socket.send(packetSend);因此在用一个字节表达数据时,为防止String转byte[]时的不确定性,我就直接用byte[]赋给dataSend[],也可以使用String的getBytes(String charsetName)方法Returns a new byte array containing the characters of this string encoded using the named charset.  byte by[] = new byte[4];  by[0] = ledNum;  by[1] = (byte)(Integer.parseInt(strR1));  by[2] = (byte)(Integer.parseInt(strG1));  by[3] = (byte)(Integer.parseInt(strB1));  byte dataSend[] = by;  //创建一个DatagramPacket对象,并指定要讲这个数据包发送到网络当中的哪个、地址,以及端口号  DatagramPacket packetSend = new DatagramPacket(dataSend,dataSend.length,serverAddress,dstPort); //调用socket对象的send方法,发送数据 socket.send(packetSend); 10、在使用TabHost时应注意其Activity的生命周期,如果不加 Intent.FLAG_ACTIVITY_CLEAR_TOP 这个flag,则Tab之间切换时,Activity只是0nPause();而不执行onStop();和onDestroy(); 并且在设置 addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) 之后,切换到另一个Activity会调用另一个Activity的OnCreat方法 tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator(getString(R.string.park), getResources().getDrawable(android.R.drawable.star_on)) .setContent(new Intent(this, ParkActivity.class) .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)));  //这句用来清空之前所有的activity 11、从XML文件中获取字符串的方法 getString(R.string.my_str); 12、在 handlerSocket.post(update); 之后又在update中递归调用 handlerSocket.postDelayed(this, 2000); 则可能会导致跳转到另一个Activity时,update仍会一次又一次地执行,这时可以在跳出Activity的触发函数,如onPause,onStop函数中加入 handlerSocket.removeCallbacks(update); 如果还是不行的话可以使用全局开关变量,runFlag(自己取的名字)。在跳入Activity的触发函数,如onCreat,onResume函数中runFlag=1,而在跳出Activity的触发函数runFlag=0。并且使用runFlag来控制 handlerSocket.postDelayed(this, 2000);  如下列代码 @Override    protected void onCreate(Bundle savedInstanceState) { ...... runFlag = 1; ...... ...... update =new Runnable(){     @Overridepublic void run() { ...... if(runFlag == 1){ handlerSocket.postDelayed(this, 2000); } } handlerSocket.post(update); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); //handlerSocket.removeCallbacks(update); runFlag = 0; }1、android.content.pm.PackageManager$NameNotFoundException 这个是因为安装的应用程序,不完整,apk有问题导致。 下载的时候出异常的话写一个接口。有一个回调。 出错了,怎么处理。 从arraylist删除 2、 java.lang.IllegalStateException: The content of the adapter  has changed but ListView did not receive a notification. Make surethe content of your adapter is not modified from a background thread,but only from the UI thread. [in ListView(2131493171, class android.widget.ListView) with Adapter这个问题出现在onresume的时候使用AsyncTask,点击item到下一个界面,按back返回的时候,出现bug。这个修改的时候加个判断当adpter不为空时notifyDataSetChanged,为空的时候就重新new. 3、添加文件到Sdcard出现Failed to push selection: Invalid argument问题 用DDMS添加文件到内存卡里提示 Failed to push the item(s).解决方案:把内存卡的容量加大,重启eclipse就OK了。补充:如果提示Failed to push selection: Invalid argument,说明你的路径中包括中文,请把中文全改为英文。导入的时候不要有空格 ,或者直接将APK拖到 File Explorer的sdcard里面。4、java.lang.ArithmeticException: divide by zero: 算数异常   http://www.eoeandroid.com/thread-84037-1-1.html      http://topic.csdn.net/t/20040409/23/2947339.html5、java.lang.IllegalStateException: get field slot from row 0 col 0  failed当数据库查询结果大于1M的时候,会报这个错误。解决办法:查询的时候限制结果列,不要查出所有的列,只查询自己需要的。Java代码  1.String  abcname = "abc";   2.  3.Cursor c = db.query("table", new String[]{age, agender,heighth}, "name"+"=?", new String[]{abcname}, null, null, null);  String  abcname = "abc";Cursor c = db.query("table", new String[]{age, agender,heighth}, "name"+"=?", new String[]{abcname}, null, null, null);  6、android sqlite查询数据时报错:  get field slot from row 0 col -1 failed , int id = cursor.getInt(cursor.getColumnIndex(ID)); , 此处是获取ID的值, 查看上面代码后发现查询字段中没有查询ID字段,而现在又要获取这个字段的值,所以报了这个错误 获得查询有限制的时候,缺少列导致。7、java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread.解决办法:list变了,立马就得notifyDataSetChanged。类似于clear()之后就马上notifyDataSetChanged。8、ListView/Adapter IllegalStateException  java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread.相信有不少android初学者在运用ListView和Adapter时发生了上述的异常。一般情况下,上述异常一般发生在我们启动一个后台线程加载数据,同时在主线程(即UI线程)刷新ListView在显示新加载的内容。我们的做法一般是:在后台线程中把加载的数据放入到一个List中,而在主线程中实例化Adapter,这个Adapter中所用到的List正是在后台线程中加载的那个List。发生上述异常的代码思路是这样子的,请看代码:首先,我们定义一个List全局变量,后台线程中加载的数据就放到这个list中(请注意我标了红色的list变量,问题就出在它身上):private List<Map<String,Object>> list = null;接着,我们会启动一个后台线程,用于加载数据:class GetDataThread implements Runnable{//单独启动一个线程用于加载歌曲列表   @Overridepublic void run() {list = new ArrayList<Map<String,Object>>();//然后把搜索出来的数据放入到list中。} }最后,我们会在主线程中刷新界面,刷新界面的代码,我们是要放到handler中处理的:class RefreshLocalMusicListThread implements Runnable{@Override  public void run() {local_lv = (ListView)findViewById(R.id.local_musiclist);   SimpleAdapter adapter = new SimpleAdapter(LocalActivity.this,list,R.layout.local_music_list,new String[]     {"local_name","local_size"}, new int[]{R.id.local_name,R.id.local_size});local_lv.setAdapter(adapter);LocalActivity.this.registerForContextMenu(local_lv);handler.postDelayed(refreshThread, 10);  }}以上的思路,是会发生上述异常的!下面请看我的分析:当执行 SimpleAdapter adapter = new SimpleAdapter(LocalActivity.this,list,R.layout.local_music_list,new String[] {"local_name","local_size"}, new int[]{R.id.local_name,R.id.local_size});时集合list中数据与我们的listView是绑定在一起的了。此时,,假如list中的数据有5条,即list.size()==5,这时与listView绑定的就是5条数据。但是,我们的后台线程还在运行,list中的数据会发生变化,然而我们的listView认定的就是之前只有5条数据的list,但是这时的list中的数据已经不是5条了,就是这个冲突导致了上述的异常!!!正确的解决方法是这样的:既然与listView绑定了的list发生了变化而没来得及通知listView导致了上述的异常,那我们就针对这一点,只要listView与list绑定后,在listView显示之前不要让list发现变化就行了。做法有很多种,我个人的做法是这样子的:首先,定义一个独立的List:private List<Map<String,Object>> data = null;接着,在onCreate或者onResume中初始化它(当然,你也可以在每次用到它的时候初始化它,不过这样子会初始化很多歌对象,浪费内存,不推荐):data = new ArrayList<Map<String,Object>>();然后,在创建adapter之前,把list中数据放入到集合data中,注意千万不要直接赋值:data = list(这是错误的,因为这样data也指向了list所在的内存地址,即data跟list是同一个对象,list改变的话data也跟着改变);应该这么做:data.clear();//要先清空data中的数据,避免把list中的数据重复放入data中。    data.addAll(list);//这样做,list中的数据就放入到data中,之后list在后台线程中改变,但data不会改变,这时,你再SimpleAdapter adapter = new SimpleAdapter(LocalActivity.this,data,R.layout.local_music_list,new String[] {"local_name","local_size"}, new int[]{R.id.local_name,R.id.local_size});listView与data绑定,就不会发生上述异常了!注意::在新开的线程里面执行的代码,一旦报错是很难查找的,因为中途异常就不会再执行线程下面的代码了,也 不会堵塞ui线程,所以必须通过大量打印去反馈信息! 9. listview 控件 写android:layout_height="wrap_content" 发现数据更新后,视图怎么也没更新的问题,    android:layout_height="fill_parent"就好了.有疑问?android开发,有时候,视图布局问题可能引发很多未知的错误,而且这种错误是不报错的,很难发现!同样要注意相对布局中嵌套线性布局的属性写法。10.static 方法 方法在该方法所属类型第一次被使用的时候加载、在该类型所在应用程序域卸载的时候卸载、也就是说 static 方法只加载一次、除非整个Domain 被卸载了。而实例方法(非静态方法),是在第一次该方法第一次调用的时候会加载、然后被缓存起来。但是中间如果有GC 的话, 就会被收集,那下次再调用该方法时,又得重新加载该方法。也就是说,实例方法有可能加载多次。总的来说,static 方法只用加载一次,但一直会占用内存。多了些资源消耗;而实例方法需要加载多次,但不会一直占用内存。少些资源消耗。一般来说, 在程序里面,一些使用频率高的方法就用static 方法、使用频率低的则用实例方法。但是我每次调用的时候都会产生在listItem.measure(0,0)报空指针异常。我debug 发现listItem 并不是为空啊,为啥会报错。在经过一番查找之后。我发现原来是自己item的布局用了RelativeLayout 把他换为LinearLayout 就好了。究其原因,原来是 Linearlayout重写了onmeasure方法,其他的布局文件没有重写onmeasure,所以在调用listItem.measure(0, 0); 会报空指针异常,如果想用这个东东,就必须用linearlayout布局喽。11.报这个错,xml又没提示信息,一般为包名pack有问题,看是否规范Unable to instantiate activity 

更多相关文章

  1. android 加密数据库
  2. Android学习笔记(6)————Android的线程与进程
  3. android 数据库
  4. Android SQLite数据库实例
  5. Android Studio 3.0 gradle提示太老 解决方法
  6. android jni 多线程编程 join thread
  7. 如何在android中使用你自己的数据文件
  8. android之SQlite创建数据库操作
  9. android连接mysql数据库

随机推荐

  1. android indication
  2. Android颜色渐变的分隔线(ListView)
  3. android 中 checkBox 的使用
  4. Android(安卓)深入研究LBS(基于位置的服务
  5. Android:霓虹灯
  6. 三步搞定:Vue.js调用Android原生方法
  7. Android之Loader理解
  8. 修改进度条ProgressBar颜色
  9. 2011.07.11——— android 自定义toast
  10. android -- 框架 使用android快速开发框