android.widget.ProgressBar.onRestoreInstanceState中无法解释的ClassCastException

MrJ*_*Jre 34 android android-widget

我已经将我的应用程序在商店中存放了一段时间,但它似乎根据开发者控制台中的崩溃报告偶尔崩溃,说: java.lang.ClassCastException in android.widget.ProgressBar.onRestoreInstanceState使用堆栈跟踪:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.company.myapp/com.mycompany.myapp.activity.MyActivity}: java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to android.widget.ProgressBar$SavedState
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1996)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2023)
at android.app.ActivityThread.access$600(ActivityThread.java:127)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1174)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4503)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to android.widget.ProgressBar$SavedState
at android.widget.ProgressBar.onRestoreInstanceState(ProgressBar.java:1093)
at android.view.View.dispatchRestoreInstanceState(View.java:9975)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2408)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2408)
at android.view.View.restoreHierarchyState(View.java:9951)
at com.android.internal.policy.impl.PhoneWindow.restoreHierarchyState(PhoneWindow.java:1611)
at android.app.Activity.onRestoreInstanceState(Activity.java:908)
at android.app.Activity.performRestoreInstanceState(Activity.java:880)
at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1102)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1974)
... 11 more
Run Code Online (Sandbox Code Playgroud)

这些崩溃的原因使我无法理解,我无法在任何设备上重现它.我也没有在onRestoreInstanceState任何地方被覆盖.有人能指出我有道理的方向吗?

jim*_*thy 74

我以前见过类似的问题,这是因为你有两个共享相同名称的id.

onRestoreInstanceState已经执行了findViewById方法和第一视图被发现不是ProgressView.

仔细检查您的应用程序是否在两个不同的位置重用相同的ID

  • 还要检查在横向布局和纵向布局中是否以不同方式定义了ID. (4认同)

bku*_*ius 9

我有一个不同的问题:在一个布局中,根是ScrollView,而在另一个布局中,根是包含ScrollView的RelativeView.所有小部件ID都是相同的,没有重复.在旋转崩溃日志时:

java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to android.widget.ScrollView$SavedState
Run Code Online (Sandbox Code Playgroud)

一旦我匹配布局(所以在根中都是RelativeLayout或ScrollView),旋转工作正常.

不知道为什么会导致崩溃所以任何见解都会受到赞赏......