1. 程式人生 > >開發中遇到的各種坑爹錯誤及修改

開發中遇到的各種坑爹錯誤及修改

一、eclipse android開發配置

(1)、sdk更新失敗

              出錯問題: 下載並解壓sdk之後,點選sdk manager.exe 下載更新,出現網址找不到的問題。

              出錯原因:資源下載網站被遮蔽了,電腦不解析為ip地址

              解決方案:1、在C:\Windows\System32\drivers\etc的hosts文件的最後加上74.125.237.1    dl-ssl.google.com,然後更新就不報錯了~

                                          網上說該檔案是隻讀的,需複製到其他位置後在修改。

                                2、 如果在專案中已經關聯sdk需要刪除或者修改。

                                       修改:window->perferences->android,選擇相關路徑,點選apply

                                       刪除:window->perferences->android,點選restore defaults(大概是恢復預設值吧……)之後apply變為灰色……我就不會了,故選擇刪除adt

                                                   刪除adt方法:help->install new software裡deails下的what is already installed,其中already installed 是帶下劃線藍色字型,點選android     

                                                  ddms和android development tools 點選 uninstall,再在彈出的視窗點選finish便可

                                                  安裝adt方法:help->install new software 點選add選擇相應路徑,再 點選next或者finish,便可。

                                   解決這個錯誤之前:我的專案r.java無法編譯,也就是java檔案中R下畫紅線……註釋之後再執行,顯示找不到*.apk……  

                                   之後:紅線消失~~虛擬機器正常執行~~我為自己驕傲呀~~~~~

            注:更新時間長,需耐心。用智慧手機做開發,虛擬機器反應更快些吧~

(2)、svn使用者更改(使用外掛的)

             出錯問題:登陸一個使用者之後,儲存了密碼,就不在提示輸入使用者名稱、密碼。

             解決方法:在c盤刪除一個資料夾,win7是隱藏資料夾中的~路徑:C:\Users\Administrator\AppData\Roaming\Subversion

                                 刪除auth資料夾下的所有檔案便可~

(3)、虛擬機器啟動失敗 

             出錯問題:報emulator-5554 disconnected! Cancelling 'com.wj.test1.TestActivity activity launch'!錯誤 程式不能正常執行

            出錯原因:記憶體不足

             解決方法:1、關掉了防毒軟體,一切正常……有人說是防毒軟體攔截了,也許是吧……

                                 2、上課時老師出現了相同問題,說是記憶體不足問題 ,在關掉一些程式後成功解決問題,並且在記憶體不足時虛擬機器會出現各種問題……

                                  3、重建虛擬機器    

(4)、avd中上下左右鍵不能用

              出錯問題:虛擬機器鍵盤處的上下左右鍵上有一行英文,顯示avd中不可使用,滑鼠點選沒反應

              解決方法:修改配置檔案,配置檔案路徑:C:\Users\Administrator\.android\avd\android2.avd\config.ini,其中android2是虛擬機器的名字。

                                  在配置檔案中找到hw.dpad=no改正hw.dpad=yes。改完以後重啟虛擬機器,鍵盤就可用了。

(5)、onActivityResult不執行

              出錯問題:傳值的時候onActivityResult不執行……

             解決方法:這是程式設計問題,具體關於onActivityResult執行原理。

                                onActivityResult是在actvity結束之後執行,也就是執行onstop之後。onActivityResult寫在第一個頁面中,需注意:

                                                       1、oncreate做跳轉傳值時需設定requestcode的值,其值為整數。

                                                       2、作為傳值成功的證明,可在onActivityResult中判斷requestcode和resultcode碼例如:

                                                                         String str=data.getStringExtra("tag_Extra");

                                                                        if(requestCode==1&&resultCode==2){
                                                           Toast.makeText(this, "返回值:"+str, 0).show();
                                                         }

                                                       3、如果在跳轉之後謝了finish(),會呼叫ondestroy方法,介面被銷燬。那麼如果你第二介面仍然如下編輯,是跳不回去滴~~

                                 在第二個介面事件程式碼:

                                                                       Intent intent=new Intent();
                                               intent.putExtra("tag_Extra", "+++++++++++++++++++Extra");
                                               setResult(2,intent);

                                                                       finish();

                                     需注意事項:

                                                                        1、intent不可做跳轉,否則第一個頁面重新建立,生命週期:oncreate->onstart 所以,

                                                                               onActivityResult在oncreate執行之前大概被銷燬了。

                                                                               Intent intent=new Intent();和回退很像,會呼叫onrestart。

                                                                        2、必須設定finish(),不然不會跳轉,大概是傳遞不到第一個介面的onActivityResult。

                      注意:

                                將原始碼與專案連結的方法:

                                                  在系統包提供的方法或類上按住f3後不顯示程式碼,但有一button提示連線程式碼檔案,點選後的顯示對話方塊。

                                                  在系統對話方塊的右邊有兩個button點選第二個button,其為載入外部原始檔,選擇D:\Program Files\android-sdk-windows\sources\android-18。

                                                  也就是選擇jak安裝檔案的sources下的檔案。如果此方法沒用歡迎補充~

(6)、android 不支援wep app libraries 3.0

                           出錯問題:專案右鍵->build path->add libraries->wep add libraries  然後系統自動選擇專案,然後finish。

                                               然後就報錯:build path contains duplicate entry:'org,eclipse.jst.j2ee.internal.web.container' for project '[專案名]'

                         解決方法:

                                              1、修改專案系統檔案:

                                                    1)、檔案目錄:專案目錄下.setting/org.eclipse.wst.common.project.facet.core.xml

                                                            修改內容:<installed facet="jst.web" version="3.0"/>

                                                                    改為:<installed facet="jst.web" version="2.5"/>

                                                     2)、檔案目錄:專案目錄下.classpath(如果第二步報錯時採取)

                                                            修改內容:<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
                                                                                <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>

                                                                    改為:刪除……

                                              2、修改專案配置:

                                                     右擊專案->properties->project facets 選中dynamic web modile、java、javascript,

                                                     並把dynamic web modile版本調到2.5,此處可能會報錯;

                                                     右邊的選項卡點選runtimes,選中apache tomcat v7.0。

                                                      操作完後需重啟……

                                                     web專案是選中這幾個檔案的~~這樣也可把java專案變成web專案~~

(7)android 專案jdk升級

出錯問題:專案jdk升級到1.7以後,醒目名稱出現紅叉,但程式沒錯console報錯。

                                     錯誤為: Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tools > Fix                                                                                                                      Project Properties.

              解決方法:1、專案名稱->android tools->fix project properties 但專案改回原來的jdk版本 求解

              注:修改jdk的方法:專案名稱->propertise->java compiler->compiler compliance setting 修改版本即可

(8)MenuDrawer menuDrawer = MenuDrawer.attach(this) 

出錯問題: 依賴MenuDrawer開源包做側滑選單,使用 MenuDrawer.attach(this)時報錯

檢視程式碼之後發現其相等同於 MenuDrawer.attach(this,MENU_DRAG_CONTENT,Position.LEFT);

在程式碼中是使用兩個方法封裝的,而我使用上一句時並未出現錯誤……

解決方法:事實再次證明,這兩句確實是相同的……是我錯了

(9)selector 中設定了背景和字型顏色 但不顯示

出錯問題:selector 中的程式碼:

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">  
    <item android:state_pressed="true"  
        android:color="
#fff"
        android:drawable="@drawable/citybutton_bg_2" /> 
     <item 
        android:color="
#aaa"
        android:drawable="@drawable/citybutton_bg_1"/>      
</selector>  

按鈕按下時,字型改變顏色,背景不顯示。

解決方法:將字型顏色設定到color中,讀取color中的顏色設定到android:color中,如以下所示

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">  
    <item android:state_pressed="true"  
        android:color="@color/main_click_color"
        android:drawable="@drawable/citybutton_bg_2" /> 
      <item 
        android:color="@color/main_unclick_color"
        android:drawable="@drawable/citybutton_bg_1"/>      
</selector>  

注:雖然定義了兩個,但如果控制元件只設置了background,未設定textcolor,點選時字型顏色不會變化始終為黑色。

設定android:textcolor="@drawable/xx",後字型才會改變顏色