2010-04-19 111 views
8

我在市場上有一個應用程序,許多用戶報告說應用程序隨機崩潰。我試圖解決這個問題,但不能完全理解日誌。這裏是日誌摘錄,Classcastexception隨機發生

04-16 13:16:32.407 E/AndroidRuntime(9237): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.maya.mobile.chiki/com.maya.mobile.chiki.tabview.Tabs3}: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.maya.mobile.chiki/com.maya.mobile.chiki.featured.FeaturedView}: java.lang.ClassCastException: android.view.AbsSavedState$1 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.app.ActivityThread.access$2200(ActivityThread.java:119) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.os.Looper.loop(Looper.java:123) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.app.ActivityThread.main(ActivityThread.java:4363) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at java.lang.reflect.Method.invokeNative(Native Method) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at java.lang.reflect.Method.invoke(Method.java:521) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at dalvik.system.NativeStart.main(Native Method) 
04-16 13:16:32.407 E/AndroidRuntime(9237): Caused by: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.maya.mobile.chiki/com.maya.mobile.chiki.featured.FeaturedView}: java.lang.ClassCastException: android.view.AbsSavedState$1 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.app.ActivityThread.startActivityNow(ActivityThread.java:2335) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:648) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.widget.TabHost.setCurrentTab(TabHost.java:320) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at com.maya.mobile.chiki.tabview.CustomTabHost.setCurrentTab(CustomTabHost.java:43) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.widget.TabHost.addTab(TabHost.java:213) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at com.maya.mobile.chiki.tabview.Tabs3.doCreateTabs(Tabs3.java:180) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at com.maya.mobile.chiki.tabview.Tabs3.onCreate(Tabs3.java:149) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459) 
04-16 13:16:32.407 E/AndroidRuntime(9237): ... 11 more 
04-16 13:16:32.407 E/AndroidRuntime(9237): Caused by: java.lang.ClassCastException: android.view.AbsSavedState$1 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.widget.AbsSpinner.onRestoreInstanceState(AbsSpinner.java:440) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.view.View.dispatchRestoreInstanceState(View.java:5940) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.view.ViewGroup.dispatchThawSelfOnly(ViewGroup.java:1140) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.widget.AdapterView.dispatchRestoreInstanceState(AdapterView.java:767) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1127) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1127) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1127) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1127) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.view.View.restoreHierarchyState(View.java:5919) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at com.android.internal.policy.impl.PhoneWindow.restoreHierarchyState(PhoneWindow.java:1454) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.app.Activity.onRestoreInstanceState(Activity.java:835) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.app.Activity.performRestoreInstanceState(Activity.java:807) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1096) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2473) 
04-16 13:16:32.407 E/AndroidRuntime(9237): ... 22 more 

我從我的一個用戶那裏得到了這個日誌。

對此的任何幫助將非常有幫助。

問候, 哈日


我終於能夠通過建立與50MB內存和GSM網絡速度運行的模擬器複製這個問題。這個問題似乎是因爲歷史被清除了,所以應用程序已經丟失了數據。不知道我怎麼可以處理這個雖然..任何幫助?

+0

您是否實施了自己的微調課程?如果是這樣,你是否重寫onRestore方法? – Adam 2010-04-19 13:06:48

+0

沒有亞當,我沒有實現任何自定義微調器類。 – HariKJ 2010-04-19 15:00:10

回答

12

我的猜測是:

  • 您有一個包含TabHost(罰款)的活動
  • 這些標籤的內容都是活動的(壞)
  • 你中一些重複android:id值在這些活動(致命的)窗口小部件
+0

其實,是的......我確實有活動作爲標籤的內容......例如。 intent = new Intent()。setClass(this,CategoryView.class); spec = tabHost.newTabSpec(「Topics」)。setIndicator(「Topics」,res.getDrawable(R.drawable.ic_tab_artists))。setContent(意圖); tabHost.addTab(spec); 其中CategoryView擴展了Activity。 所以,你能告訴我什麼我需要作爲標籤的內容? – HariKJ 2010-04-19 15:01:56

+0

我曾經使用過一個例子http://www.androidsnippets.info/snippets/68/ 你能告訴我爲什麼我們不應該使用活動嗎? – HariKJ 2010-04-19 15:31:53

+0

那麼,其他人喜歡把活動作爲標籤的內容,但我能看到的是他們佔用更多的內存,更多的CPU時間和更多的堆棧空間,使應用程序工作變得更糟。你可以設置你的標籤,使其具有簡單的'Views'作爲它們的內容,例如這個項目:http://github.com/commonsguy/cw-android/tree/master/Fancy/Tab/即使你讓你的活動獨自一人,您需要更改這些活動使用的佈局,以使其所有小部件的「android:id」值都是唯一的。 – CommonsWare 2010-04-19 16:06:05

1

我也有這個問題。我有兩個帶有相同ID的小部件的活動。在一個文件中,這個小部件是一個Button,在另一個文件中,這個小部件是一個Spinner。我更改了ID,以便Spinner擁有與Button不同的ID,問題就消失了。看起來,如果您在小部件的兩個不同的上使用相同的ID,Android似乎遇到了問題。

1

我有一個類似的問題 這是兩個視圖[按鈕]具有相同ID 它的發生給我,因爲 Eclipse的XML編輯器顯示一個按鈕,但同一ID的註冊2結果 我解決它通過切割按鈕保存,然後粘貼並再次保存。

0

有時這發生在我身上。

先試試這個: 刪除R.java文件以便重新生成。

然後試試這個: 我在XML和java中重命名小部件的id。 然後刪除R.java文件以便重新生成。 運行它將其清除。將它重新命名爲它的方式,並且它的好處。