Android開發過程遇到異常含義及解決方法整理

1. Unable to find explicit activity class   :

導致原因 :有Activity 沒有 在AndroidManifest.xml文件中註冊
解決辦法:把 Activity添加到在AndroidManifest.xml文件中

 

2 . [2013-01-30 10:49:14 - ddmlib] 您的主機中的軟件放棄了一個已建立的連接。
java.io.IOException: 您的主機中的軟件放棄了一個已建立的連接。
 at sun.nio.ch.SocketDispatcher.write0(Native Method)
 at sun.nio.ch.SocketDispatcher.write(Unknown Source)
 at sun.nio.ch.IOUtil.writeFromNativeBuffer(Unknown Source)
 at sun.nio.ch.IOUtil.write(Unknown Source)
 at sun.nio.ch.SocketChannelImpl.write(Unknown Source)
 at com.android.ddmlib.JdwpPacket.writeAndConsume(JdwpPacket.java:213)
 at com.android.ddmlib.Client.sendAndConsume(Client.java:575)
 at com.android.ddmlib.HandleHeap.sendREAQ(HandleHeap.java:348)
 at com.android.ddmlib.Client.requestAllocationStatus(Client.java:421)
 at com.android.ddmlib.DeviceMonitor.createClient(DeviceMonitor.java:837)
 at com.android.ddmlib.DeviceMonitor.openClient(DeviceMonitor.java:805)
 at com.android.ddmlib.DeviceMonitor.processIncomingJdwpData(DeviceMonitor.java:765)
 at com.android.ddmlib.DeviceMonitor.deviceClientMonitorLoop(DeviceMonitor.java:652)
 at com.android.ddmlib.DeviceMonitor.access$100(DeviceMonitor.java:44)
 at com.android.ddmlib.DeviceMonitor$3.run(DeviceMonitor.java:580)
  導致原因:真機調試沒有開啓開發人員USB調試
   解決辦法: 開啓開發人員USB調試

 

3. java.lang.RuntimeException: Unable to start activity ComponentInfo{XXX.PositionActivity}:
java.lang.RuntimeException: Binary XML file line #23: You must supply a layout_width attribute.


導致原因是 PositionActivity對應的佈局文件XML存在語法錯誤

解決辦法:仔細檢查對應佈局文件,找出引發錯誤的錯誤代碼

 

4.發送Http請求時  android.os.NetworkOnMainThreadException異常

導致原因:異常大概意思是在主線程訪問網絡時出的異常。 Android在4.0之前的版本 支持在主線程中訪問網絡,
但是在4.0以後對這部分程序進行了優化,訪問網絡的代碼不能寫在主線程中了。

解決辦法:在要使用HTTP請求的Activity的OnCreate方法中加入:
       StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());
       StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectAll().penaltyLog().penaltyDeath().build());

5.android數據庫sqlite關閉異常   : ERROR/Cursor(1188): Finalizing a Cursor that has not been deactivated or closed. database = /data/data/com.icss/databases/resoute_list, table

= resoute_list, query = SELECT id, user_name,socre, part_time ,type  FROM resoute_list ORDER BY id desc

06-13 18:04:35.176: ERROR/Cursor(1188): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object

that was opened here

導致原因:每次查詢完成後需要關閉 SQLiteDatabase 對象  databaseHelper  對象   Cursor對象,在第一次使用查詢時 沒有關閉 databaseHelper  對象,只關閉SQLiteDatabase 對象 和 Cursor對象,第二次(第二個Activity中查詢)查詢時出現此異常

解決辦法:每次查詢完成後需要依次關閉 Cursor對象  、databaseHelper  對象、 SQLiteDatabase 對象。

6.多次clean 項目出現:

Android: R cannot be resolved to a varia... 

導致原因:自動生成的R文件被刪除 或不完整

解決辦法:

(1)檢查Android 的SDK是否丟失需要重新下載,檢查build path
(2)確保class沒有import Android.R;
(3)錯誤class引用的layout的xml文件沒有錯誤
(4)檢查AndroidManifest.xml文件,裏邊的package,layout配置文件,strings.xml等的字符串全部書寫正確
(5)layout的xml文件中引用的strings.xml中的字符串拼寫完全正確
(6)在layout 的xml文件手寫添加一個控件,看id能否在R.java中自動生成,如果不能,那很大可能就是這個layout 的xml文件有問題,查看格式是否使用正確,或者包含什麼非法字符串,或者調用到了不正確的字符串,等等,可以使用排除法,挨個去掉控件,直到發現error message消失或者id能在R.java中自動生成。
(7)刪掉gen文件夾,使R.java重新自動生成一次,如果不能生成,繼續檢查layout的xml文件是否有如上不易發覺的問題
(8)Clean project ,重新build,或者重新import project。
(9)重啓eclipse
(10)重啓電腦,以防Android 虛擬機的問題

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章