2010-04-19 110 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文件以便重新生成。 运行它将其清除。将它重新命名为它的方式,并且它的好处。