2012-03-17 50 views
2

如何開始排除類似錯誤的故障?我時不時得到他們,我不知道如何處理他們。我認爲我在解碼堆棧跟蹤方面做得非常好,但是這個讓我感到困惑。Android堆棧跟蹤未提及我的代碼

java.lang.NullPointerException 
at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355) 
at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323) 
at android.widget.AbsListView.obtainView(AbsListView.java:1315) 
at android.widget.ListView.makeAndAddView(ListView.java:1727) 
at android.widget.ListView.fillDown(ListView.java:652) 
at android.widget.ListView.fillSpecific(ListView.java:1284) 
at android.widget.ListView.layoutChildren(ListView.java:1558) 
at android.widget.AbsListView.onLayout(AbsListView.java:1147) 
at android.view.View.layout(View.java:7035) 
at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 
at android.view.View.layout(View.java:7035) 
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249) 
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125) 
at android.widget.LinearLayout.onLayout(LinearLayout.java:1042) 
at android.view.View.layout(View.java:7035) 
at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 
at android.view.View.layout(View.java:7035) 
at android.view.ViewRoot.performTraversals(ViewRoot.java:1045) 
at android.view.ViewRoot.handleMessage(ViewRoot.java:1727) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:123) 
at android.app.ActivityThread.main(ActivityThread.java:4627) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:521) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
at dalvik.system.NativeStart.main(Native Method) 

我發現了一個android bug嗎?我會包含一些代碼,但我不知道要包含哪些代碼。它可能是任何東西。

+0

來自主要活動的代碼以及與之相關的佈局XML如何 – dldnh 2012-03-17 21:12:47

回答

3

我發現了一個android bug嗎?

可能不是。

它可能是任何東西。

不,它不能。堆棧跟蹤指出ArrayAdapter存在問題。無論您是創建有問題的ArrayAdapter,還是創建其他內容(例如,AlertDialog),本身都會創建ArrayAdapter。在代碼中只能有這麼多地方發生這種情況,並且可能有代碼的重要部分與ArrayAdapter無關。

接下來,您可以看到異常發生在createViewFromResource()。只是從方法名稱和例外中,最可能出現的問題應該牢記於心:您在構造函數ArrayAdapter中提供了無效的佈局資源ID。

請注意,「無效的佈局資源ID」可能不是你的錯。每當在Android開發中遇到與資源相關的錯誤,請清理您的項目(從Eclipse主菜單中執行Project> Clean或從命令行輸入ant clean),然後重試。如果問題消失,生活就會很好。如果問題仍然存在,在這種情況下,請仔細看看您的ArrayAdapter構造函數。

如果有幫助,歡迎檢查the source code to ArrayAdaptercreateViewFromResource()。鏈接指向該類的最新版本,但您可以使用「分支」選項卡查找與您正在運行的任何Android版本對應的選項卡。有時候,如果你在硬件上運行,線路號碼將不匹配,因爲設備製造商對班級進行了修改,但考慮到方法名稱,仍然可以找到問題所在的一般區域。在這種情況下,可以合理提高NullPointerException的東西相對較少,因此最可能的情況是您(或構建工具)仍然提供了無效的佈局資源ID。

+0

您是對的。我沒有正確操作我的陣列適配器(有幾個錯誤)。你的分析很有用,而且非常有幫助。謝謝! – MrGibbage 2012-03-18 15:41:42

0

當我遇到xml文件(佈局或清單)問題時,我收到了這樣的異常。它在應用程序啓動過程中發生。

0

根據您的IDE,您可以使用Eclipse/Intellij IDEA調試器來跟蹤代碼並準確找到您的活動失敗的位置。

0

根據我的經驗,這不是Android錯誤,而是特定設備上的Android實現問題。我有一個類似的問題,我很長一段時間後發佈 - App crashing in Desire HD,並且有一些討論可能會有所幫助。

但是,假設所有設備都已正確QA。除了硬件問題(攝像頭/傳感器)之外,幾乎沒有任何設備會因爲代碼錯誤之外的原因而崩潰。

從網上覆制粘貼代碼時也要非常小心!