在Andorid開發項目中遇到的Bug記錄(續)

[22]遇到query cannot be resolved to a variable錯誤,java

解決:1.Java裏面定義的變量不能跟系統包裏面的關鍵字相同(大小寫不一樣也不行),系統包裏面有個Query,把query改 2.變量在方法中是否被定義爲局部變量,從而不能做爲方法的返回值成其餘名字便可android

[23]Unable to execute dex: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl網絡

解決:app

[24]java.lang.reflect.InvocationTargetException框架

解決:eclipse

[25]java.net.ConnectException: failed to connect to /***.***.***.***(port 80): connect failed: EHOSTUNREACH (No route to host)異步

解決:網絡雖然鏈接,可是網絡阻塞,斷開重連ide

[26]android.widget.TextView cannot be cast to android.widget.CheckBox函數

解決:佈局文件中TextView控件被覆蓋,佈局

[27]java.lang.RuntimeException: Parcel: unable to marshal value {CLASSNAME}

解決:用Intent跳轉Activity時,出現這個錯誤,intent.putExtra("siteInfo", (Serializable)listSiteInfo);這行代碼調試經過,可是不能實現跳轉,拋出錯誤,緣由是listSiteInfo是我本身定義類型爲SiteInfo的一個Arraylist,SiteInfo這個類必需要繼承Seralizable,才能轉換成(Serializable)類型。

[28]在監聽事件裏面執行異步類AsyncTask的代碼,若是想要將異步類執行後的結果獲取到,而後在監聽事件裏面繼續執行後面的代碼,這是不可取的,由於異步類AsyncTask和你的監聽之間後面的代碼同時運行,若是後面的代碼須要用到異步類裏面返回的結果後再執行,是不行的,由於等異步類裏面的代碼執行的時候,監聽事件裏面後面的代碼可能已經執行完了,因此最好是把後面須要執行的代碼寫到AsyncTask異步類裏面的PostExecute裏面執行

[29]android.view.WindowManager$BadTokenException: Unable to add window -- token

解決:致使報這個錯是在於new AlertDialog.Builder(mcontext),雖然這裏的參數是AlertDialog.Builder(Context context)但咱們不能使用getApplicationContext()得到的Context,而必須使用Activity,由於只有一個Activity才能添加一個窗體。 將new AlertDialog.Builder(Context context)中的參數用Activity.this(Activity是你的Activity的名稱)來填充就能夠正確的建立一個Dialog了

[30] java.lang.RuntimeException: Unable to instantiate activity ComponentInfo異常

解決 不能實例化activity有以下三種狀況: 1.沒有在Manifest.xml 清單中註冊該activity,或者在建立完activity後,修改了包名或者activity的類名,而配置清單中沒有修改,形成不能實例化。 2.本身新建了一個包,而註冊時候依然用的默認包,例如,默認包是com.ghg.Dao包,你新建了一個com.ghg.DaoImpl包,並在此包中寫了個FirstActivity,在manifest.xml中注 冊時你寫的是<activity  android:name=".FirstActivity"/>,此時至關於你在的類註冊到了默認包中,系統在默認包中是找不到的,由於你的FirstActivity在com.ghg.DaoImpl包 下,因此你註冊時應寫成包名加類名,如:<activity android:name="com.ghg.DaoImpl.FirstActivity";這樣系統才能在指定的包中找到對應的類。 3.還用一種就是你的FirstActivity定義成了抽象類,這種狀況好像通常人不會犯。 若是上述三種狀況都考慮到了,還會拋出此異常,那麼就查看一下activity類裏是否同時存在這個類的構造函數和oncreate(),若是是,那麼刪除構造函數試試,並把初始化放到 oncreate()中試試。

[31]android.content.res.Resources$NotFoundException: String resource ID #0x0 找不到資源文件ID #0x0

緣由分析以下: 遇到這種狀況,頗有多是把一個int型業務數據的 設置setText()或者相似的方法中, 這樣Android系統就會主動去資源文件當中尋找, 可是它不是一個資源文件ID, 因此就會報出這個bug。 將int型業務數據,轉換成String類型便可。

[32]使用Spinner控件時,必需要給spinner綁定數據,不然報空指針的錯誤,空值

[33.]不顯示系統菜單

解決:把manifest中的android:targetSdkVersion去掉,看看顯不顯示menu

[34]使用最新版本的androidsdk(4.x)和adt插件時,新建android工程時紅叉和感嘆號 使用adtbundle 20150202版本,最低版本選4.0以上

[35]eclipse的 Invalid project description. overlaps the location of another project

解決:下載工程時把該工程放在了workspace目錄下。eclipse插件在建立項目的時候須要在workspace目錄下建立一個同名的目錄。 但發現workspace目錄下已存在對應的目錄時,就會報上面的處錯誤信息了,把項目拷貝到其餘文件及再導入

[36]多媒體應用開發,用Intent調用手機攝像頭拍照和攝像時,若是在傳Intent時指定了MediaStore.EXTRA_OUTPUT的Uri(文件保存位置),那麼在onActivityResult裏面返回的data的可能爲null

解決:這是不一樣手機機型的問題,方案:1,不手動指定保存路徑,讓系統自動默認保存 2.手動指定路徑,聲明一個全局變量uri保存路徑,在onActivityResult裏面不能用data.getData()方法獲取uri

[37]使用fragment裏面的控件綁定onclicklistener點擊事件無效

解決:使用fragment或者fragmentactivity時,爲在繼承fragment類的自定義類裏面的控件設置點擊事件監聽必需要在fragment那個類裏面的onActivityCreated方法裏面去給控件綁定監聽,在fragmenet類裏面能夠用getactivity()方法得到fragment所在的activity

[38]解除EditText控件自動獲取焦點

解決:在EditText的父控件中設置focusable和focusableintouchmode爲true

[39]error: Error parsing XML: unbound prefix

解決:自定義控件在attrs.xml添加自定義屬性時,在佈局文件中使用自定義控件,標籤名應該爲自定義控件所在的包名加上類名,另外,還要在引入自定義控件的xmlns命名空間(xmlns:自定義屬性名="http://schemas.android.com/apk/res/包名"(主類所在包名/自定義控件類包名?)

[40]java.lang.NoClassDefFoundError: android.support.v4.view.MotionEventCompat

解決:android.support.v4.util.SparseArrayCompat,這個問題很奇怪,JAR包也有了,編譯也經過了。但就是運行時出現類找不到的問題。NoClassDefFoundError這種錯誤通常就是對應的類,沒有被包含在對應的APK裏面。 而MotionEventCompat這個類屬於android.support.v4擴展庫.檢查了一下項目Libraries目錄,發現沒有引入這個包,右鍵項目屬性-BuildPath-Libraries-Add External Jar,找到adt插件文件下面的D:\eclipse\adt\sdk\extras\android\support\v7\appcompat\libs的v4包,而後在order and Export裏面給v4勾上,問題解決.(低版本的adt,右鍵項目屬性,把【Android Private Libraries】前面的勾選中,再clean工程,再編譯運行)

[41]Unable to execute dex: Multiple dex files define Landroid/support/annotation

解決:在項目中,有一個類的包名和引用的jar包中的類和包名一致,我用的是jar包中的類,因此工程中的這個類就是重複引用的,刪除工程中重複引用的類後,成功打包啓動

[42]佈局文件A中,使用<include layout="@layout/mylayout"  />標籤時,能夠經過A直接findviewbyid找到mylayout上的控件並設置監聽事件,而使用mylayout的view去對mylayout裏面的控件綁定事件是無效的

[43]在百度地圖上面覆蓋一個佈局文件,在地圖上的佈局文件中去拖動地圖時,地圖也會隨之移動,效果很很差,只想在觸摸地圖界面時才能讓百度地圖移動 解決:試過一些辦法,setfocusable ,setfocesableintouchmode,聽了羣裏一位網友的建議採用framelayout,都不起做用,後面忽然想到,在可點擊的控件上面去視圖拖動地圖,地圖不會動,因而,我把全部覆蓋在地圖上面的佈局文件的父佈局設置clickable屬性爲true,問題解決!

[44]Eclipse中添加TODO標籤後,在Tasks列表裏面找不到剛添加的內容;

  解決:TODO 後面要接一個空格,TODO 標籤後面第一個字最好爲中文 不能爲英文,我就遇到過這種狀況,TODO後面直接英文在Tasks列表裏面找不到,這有多是Eclipse的Bug

[45] ArcGIS for Android FeatureLayer進行編輯,調用applyEdit方法前必需要把該featureLayer添加到MapView中才能提交成功。在applyEdit的回調方法不在UI線程中執行,因此callback方法裏面不要進行UI相關操做,包括彈Toast

[46] PopupWindow焦點問題:使用按鈕彈出popwindow,再次點擊popupwindow又從新被打開,緣由是點擊按鈕後popupwindow失去焦點自動hide,若是按鈕的onclick事件裏面有判斷isShowing()狀態,那麼返回false,故每次都從新建立並popupwindow

[47]控件設置focusintouchable爲true時,第一次點擊控件會獲取不到焦點

[48]使用Volly框架裏面的Post方法提交數據時,會屢次請求url,測試中出現請求失敗後會從新再請求一次url或者屢次,使用Android API裏面原生的HttpPost請求時只會發送一次請求

[49]Android全部的widget都必須設置layout高寬屬性

[50]ListView設置listSelector後點擊Item沒有UI變化效果

  解決:設置ListView的drawSelectorOnTop爲true,解決ListView設置listSelector屬性後選中ListItem無響應的問題,原理是在最上層繪製cacheColorHint解決ListView拖動時的背景色問題,設置爲白色全透明便可解決

[51]Android TextView實現跑馬燈 必須設置四個屬性android:singleLine="true",以及android:ellipsize="marquee",android:focusable="true"以及android:focusableInTouchMode="true",也就是TextView必須獲取到焦點

[52]TextView設置滾動效果

  解決:在佈局裏面設置android:scrollbars="vertical";或者在代碼裏面設置setMovementMethod(ScrollingMovementMethod.getInstance());

[53]優化佈局:ViewStub用法

                     // viewStub=(ViewStub)findViewById(R.id.taskinfo_more_stub);

                     // viewStub.setLayoutResource(R.layout.task_xgd_layout);

                     // if (viewStub!=null) {

                     // View moreDetailView=viewStub.inflate();

                     // }

[53]Content has view with id attribute 'android.R.id.list' that is not a ListView

  解決:使用了繼承自ListActivity或者ListFragment的類,佈局文件中的ListView控件的id必須設置爲‘android:id/list‘,即: android:id="@android:id/list"

相關文章
相關標籤/搜索