1. 程式人生 > >Android eclipse常見錯誤開發總結

Android eclipse常見錯誤開發總結

出現這個問題的時候可以把硬加速改為false,即在Manifest檔案的application中加入如下語句:
android:hardwareAccelerated="false"就可以顯示出來。


問題6:
'ADB server didn't ACK'(The connection to adb is down, and a severe error has occured.)
的解決辦法:
一般情況下1.先把工作管理員上所有的adb.exe關閉掉,重啟eclipse就可解決。但如果這種辦法不行的話,可以試試:
1、先把eclipse關閉。
2、在管理器站到你的android SDK的platform-tools下,鍵入adb kill-server,如果adb關閉了會提示server not running *
3、鍵入adb start-server 如果不成功會提示daemon not running.starting it now on port ***,而如果成功不提示任何語句的,這是再重新開啟eclipse就可以正常運行了。
還有一種情況是開了豌豆莢,導致了埠衝突。
我遇到的問題就是USB線真的開始有問題了,沒連線好電話,所以出現adb一執行起來然後就消失的情況。⊙﹏⊙b汗。


問題7:
Unable to start activity ComponentInfo(....SecondActivity)java.lang.NullPointerException:

空指標異常:
空指標異常產生的主要原因:
1、當一個物件不存在時又呼叫其方法會產生此異常obj.method()//obj物件不存在(比如一個物件str你沒有賦值,卻呼叫它就會出現空指標異常的情況)。
2、當訪問或修改一個物件不存在的欄位時會產生異常obj.method()//method方法不存在。
****我出現的問題是R.id.button01由於粗心寫成了R.layout.secondactivity這樣就找不到那個button01,所以會出現空指標異常。
空指標解決方法:
重點關注報錯發生的所在行,通過空指標異常 產生的兩條主要原因診斷具體的錯誤。同時為了避免空指標的發生,最好在做判斷處理時將“null”或者空值放到設定的值之前。
詳解:NullPointerException是空指標異常。但是在java中沒有指標,怎麼會有空指標異常呢?在C++中,宣告的指標需要指向一個例項(通過new方法構造),這個指標可以理解為地址。在java中,雖然沒有指標,但是有引用(通常稱為物件引用,一般直接說物件),引用也是要指向一個例項物件(通過new方法構造)的,從這種意義上說,java中的引用於C++中的指標沒有區別,不同的是,處於安全的目的,在java中不能對引用進行操作,而在C++中可以直接進行指標的運算,例如book++等。
所以這裡的NullPointerException雖然不是真正的空指標異常,但本質上差不多,是因為引用沒有指向具體的例項,所以當訪問這個引用的方法的時候就會產生這種異常,例如下面的程式碼:
String str = "這是一個測試用的字串!";
System.out.println(str.length());
這段程式碼沒有問題,但是如果改成下面的程式碼:
String str;
System.out.println(str.length);
就會產生NullPointerException異常了。那這種異常通常是如何產生的呢?比較多見的是下面的兩種情況:
1、把呼叫某個方法的返回值直接賦值給某個引用,單後呼叫這個引用的方法。在這種情況下,如果返回的值是null,必然會產生NullPointerException異常。例如:
String userName = request.getParameter("userName");
if(userName.length()==0)
.....
else
......
如果request.getParameter("userName")的結果為null,則這裡就會產生這種異常。
2、在方法體中呼叫引數的方法。這種情況下,如果呼叫的方法的時候傳遞進來的值是null,也要產生NullPointerException異常。
要解決這種異常,只需要檢查異常出現在第幾行,然後檢視呼叫了哪個物件的方法,然後檢查這個物件為什麼沒有賦值成功即可。
要避免程式產生這種異常,比較好的解決方法是在呼叫某個物件的時候判斷這個物件是否為空,如果可能,則增加判斷的語句,例如上面的程式碼可以寫成:
if(str!=null)
System.out.println(str.length());
else
System.out.println(0);


問題8:
如果MyAdapter中的getView()方法不執行,那麼就應該呼叫adapter.notifyDataSetChanged();方法(此方法為BaseAdapter中的方法)

原因:
setAdapter 時,首先會執行getCount(),當getCount()  返回的是0時,就不會去執行getView()方法, 如果 開啟執行緒去下載資料,然後在getCount()中返回其size, 開始的時候因為還沒有下載資料,返回的size可能是0,所以不會去呼叫getView()方法,介面就不會被填充。    下載完成後  通過 notifyDataSetChanged()方法 重新載入介面卡,就會呼叫getView()方法了。。


問題9:
java.lang.ClassNotFoundException:com.example.MainActivity

個人按下面順序排查:
1.
在Manifest.xml中檢視Activity的名字是否書寫正確。
2.
在Manifest.xml確認Activity標籤中的android:name屬性的格式,例如我的activity的名字是helloworld,確認android:name=”.helloworld”(其中的點很重要)。
3.
如果有新增外部包的情況下,在工程根目錄下建libs目錄,然後將需要匯入的外部包放入此目錄內再add jars(專案- -》屬性- -》- -》Java Build Path - -》Libraries 新加一個support-v4包)。
4.
如果上面都確保OK的情況下仍發生問題的話,clean工程->關閉eclipse->在命令列中重啟adb(adb kill-server adb start-server)->開啟eclipse->編譯啟動。


問題10(關於viewflow的使用):
使用網路上比較流行的舊版(也可以稱作修改後可以實現迴圈的版本)的時候,滑動圖片的時候,老是出現閃動。

解決方法是:
在AndroidManifest.xml檔案中將android:targetSdkVersion = "17"這句話刪除掉就可以。


問題11(關於百度地圖的問題):
java.lang.NoClassDefFoundError: com.baidu.mapapi.BMapManager

解決辦法:

一、右擊專案->properties->Java Build Path->Order and Export,在需要引用的包前面打勾。

二、Project->Clean...


問題12:
Caused by: java.lang.ClassCastException: com.fragments.Fragment1 cannot be cast to android.app.Fragment

的解決方法:
(1)app.fragment和v4.fragment都是可以使用<fragment>標籤的
      只是在在使用的時候如果是app.fragment則沒有什麼特殊的地方繼承Activity即      可。


(2)當v4.fragment使用<fragment>標籤的時候就要特別注意了:
當這個Activity的佈局中有<fragment>標籤的時候,這個Activity必須繼承
FragmentActivity,否則就會報錯。
所以本錯誤的解決方法就是:將MainActivity繼承的Activity改成FragmentActivity即可。


問題13:
(非eclipse錯誤,按鈕點選錯誤2014-3-17花費兩天時間搞定的一個問題):
GridView中的setOnItemClickListener不響應的問題:

原因:由於在每個item中使用的類似於Button、ImageButton的按鈕,所以是button攔截了點選事件。
解決方法:這個時候,需要將Button或ImageButton改換為ImageView,問題就得到了解決。
當問題解決的時候,總是令人興奮的(感覺以前的苦惱都是值得的)。




問題14:
 Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE

 ...
 無效的儲存,儲存空間不足,卸掉幾個無用的APP即可解決問題。
 
 問題15:
 (在使用gridview的情況下--bitmapfun中的)
 java.lang.ClassCastException: android.widget.AbsListView$LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams

 主要原因:就是AbsListview的LayoutParams不能準換成.xml佈局檔案中的RelativeLayout的LayoutParams
 
 問題16:
 (在開啟虛擬機器的情況下)出現:
 This application has requested the Runtime to terminate it in an unusual way.
 Please contact the application's support team for more information.

 可能問題:在建立AVD時設定的RAM過大(我選擇的device是Nexus 7,其預設RAM是1024)。
 解決方法:將這個值改為512後就能正常啟動AVD了 
 
 問題17(非錯誤;關於LogCat):
 Eclipse LogCat出現大量"Unexpected value from nativeGetEnabledTags: 0"
的解決方法:
 在logcat的過濾器的log message欄位中輸入以下過濾串:
^(?!.*(nativeGetEnabledTags)).*$ 
如果依然還有大量的資訊出現,可以考慮使用LogCat最上部的過濾搜尋,直接搜尋Text,或者tag:TAG.這樣就可以找到需要列印的資訊。


問題18:
The connection to adb is down, and a severe error has occured.

解決方法:在Eclipse進入DDMS模式,重啟下ADB


問題19:
Ctrl+Alt+方向上下鍵:Eclipse中該快捷鍵用於複製該行程式碼,但最近在Eclipse中卻沒任何效果。

可能問題:該快捷鍵被電腦中的某個應用所佔用。
解決方法:當時原因就是網易雲音樂的聲音調大調小的快捷鍵就是Ctrl+Alt+方向上下鍵,與Eclipse中的快捷鍵重複。
所以當任何時候的快捷鍵不起作用的時候,都應該想到該快捷鍵可能被某個應用程式所佔用了。


問題20:
Eclipse新增Android library錯誤
的原因:
我這裡是project和library沒有在同一個碟符下面。
所以:在windows系統下,library project必須和project處於相同的碟符中.
以後要養成的一個習慣是:匯入project或library的時候,要勾選copy projects into workspace...以保證都在同一個碟符下面。


問題21:
Eclipse中Android SDK Manager中,未出現完整的API版本(或者說API版本得不到更新)
,解決方法:
1、在C:\Windows\System32\drivers\etc資料夾下面的hosts檔案中新增如下資訊:
#Google主頁


203.208.46.146 www.google.com


#這行是為了方便開啟Android開發官網 現在好像不VPN也可以開啟


74.125.113.121 developer.android.com


#更新的內容從以下地址下載


203.208.46.146 dl.google.com


203.208.46.146 dl-ssl.google.com
2、在Eclipse中的Android SDK Manager中Tools -> Options -> others下面的第一個(force...)打上對勾即可。


問題22:
Eclips中layout中的佈局檔案的Graphical Layout不顯示佈局

情況<1>(一般情況):
解決辦法:專案右鍵-->Android Tools-->Fix Project Properties,然後右鍵close專案-->open專案,再次開啟,即可;
如果再次開啟的時候,依然不可以,那麼重啟Eclipse即可。
情況<2>(This version of the rendering library is more recent than your version of ADT plug-in. Please update ADT plug-in):
解決辦法:
     1、更新ADT。2、更改右上角adt版本為低版本3、manifest.xml資料夾中sdk配置版本的更改