在方向改变类转换异常(Android版) [英] class cast exception on orientation change (Android)
问题描述
我有一个由片活动举办的活动。当我改变屏幕的方向我的应用程序崩溃。
21 02-14:01:35.825:E / AndroidRuntime(9424):了java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.testapp / com。示例。 testapp.MainActivity}
java.lang.ClassCastException:android.view.AbsSavedState $ 1不能转换为android.widget.AbsListView $ SavedState
02-14 21:01:35.825:E / AndroidRuntime(9424):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2194)
02-14 21:01:35.825:E / AndroidRuntime(9424):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2229)
02-14 21:01:35.825:E / AndroidRuntime(9424):在android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3791)
02-14 21:01:35.825:E / AndroidRuntime(9424):在android.app.ActivityThread.access $ 700(ActivityThread.java:139)
02-14 21:01:35.825:E / AndroidRuntime(9424):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1265)
02-14 21:01:35.825:E / AndroidRuntime(9424):在android.os.Handler.dispatchMessage(Handler.java:99)
02-14 21:01:35.825:E / AndroidRuntime(9424):在android.os.Looper.loop(Looper.java:154)
02-14 21:01:35.825:E / AndroidRuntime(9424):在android.app.ActivityThread.main(ActivityThread.java:4945)
02-14 21:01:35.825:E / AndroidRuntime(9424):在java.lang.reflect.Method.invokeNative(本机方法)
02-14 21:01:35.825:E / AndroidRuntime(9424):在java.lang.reflect.Method.invoke(Method.java:511)
02-14 21:01:35.825:E / AndroidRuntime(9424):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784)
02-14 21:01:35.825:E / AndroidRuntime(9424):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
02-14 21:01:35.825:E / AndroidRuntime(9424):在dalvik.system.NativeStart.main(本机方法)
02-14 21:01:35.825:E / AndroidRuntime(9424):java.lang.ClassCastException:致android.view.AbsSavedState $ 1不能被转换为android.widget.AbsListView $ SavedState
02-14 21:01:35.825:E / AndroidRuntime(9424):在android.widget.AbsListView.onRestoreInstanceState(AbsListView.java:1596)
02-14 21:01:35.825:E / AndroidRuntime(9424):在android.view.View.dispatchRestoreInstanceState(View.java:9977)
02-14 21:01:35.825:E / AndroidRuntime(9424):在android.view.ViewGroup.dispatchThawSelfOnly(ViewGroup.java:2346)
02-14 21:01:35.825:E / AndroidRuntime(9424):在android.widget.AdapterView.dispatchRestoreInstanceState(AdapterView.java:778)
02-14 21:01:35.825:E / AndroidRuntime(9424):在android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2332)
02-14 21:01:35.825:E / AndroidRuntime(9424):在android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2332)
02-14 21:01:35.825:E / AndroidRuntime(9424):在android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2332)
02-14 21:01:35.825:E / AndroidRuntime(9424):在android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2332)
02-14 21:01:35.825:E / AndroidRuntime(9424):在android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2332)
02-14 21:01:35.825:E / AndroidRuntime(9424):在android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2332)
02-14 21:01:35.825:E / AndroidRuntime(9424):在android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2332)
02-14 21:01:35.825:E / AndroidRuntime(9424):在android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2332)
02-14 21:01:35.825:E / AndroidRuntime(9424):在android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2332)
02-14 21:01:35.825:E / AndroidRuntime(9424):在android.view.View.restoreHierarchyState(View.java:9955)
02-14 21:01:35.825:E / AndroidRuntime(9424):在com.android.internal.policy.impl.PhoneWindow.restoreHierarchyState(PhoneWindow.java:1671)
02-14 21:01:35.825:E / AndroidRuntime(9424):在android.app.Activity.onRestoreInstanceState(Activity.java:939)
02-14 21:01:35.825:E / AndroidRuntime(9424):在android.app.TabActivity.onRestoreInstanceState(TabActivity.java:84)
02-14 21:01:35.825:E / AndroidRuntime(9424):在android.app.Activity.performRestoreInstanceState(Activity.java:911)
02-14 21:01:35.825:E / AndroidRuntime(9424):在android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1132)
02-14 21:01:35.825:E / AndroidRuntime(9424):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2172)
02-14 21:01:35.825:E / AndroidRuntime(9424):12 ...更多
这行清单不帮助:
的android:configChanges =方向| keyboardHidden
和一件事其他人:在我的活动我使用的自定义视图(水平的ListView)从<一个href=\"https://github.com/dinocore1/DevsmartLib-Android\">https://github.com/dinocore1/DevsmartLib-Android
应用程序是没有这个自定义视图工作正常,但我需要使用它。
不幸的是我没有足够的信誉发表图片。
块引用>XML文件没有图像和布局的XML文件。
我发现,如果我从第二移除第一个选项卡或HorizontalListView列表视图,我可以改变方向,没有任何问题。
块引用>这,再加上你的症状,建议您命名这两个部件用相同的
的android:ID
值。这是行不通的,因为它们的保存状态,不一样的。要么使他们既是同一类,或它们命名为不同的东西。I have an activity which is hosted by tab activity. When i change screen orientation my app crashes.
02-14 21:01:35.825: E/AndroidRuntime(9424): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.testapp/com.example.testapp.MainActivity} java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to android.widget.AbsListView$SavedState 02-14 21:01:35.825: E/AndroidRuntime(9424): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2194) 02-14 21:01:35.825: E/AndroidRuntime(9424): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2229) 02-14 21:01:35.825: E/AndroidRuntime(9424): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3791) 02-14 21:01:35.825: E/AndroidRuntime(9424): at android.app.ActivityThread.access$700(ActivityThread.java:139) 02-14 21:01:35.825: E/AndroidRuntime(9424): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265) 02-14 21:01:35.825: E/AndroidRuntime(9424): at android.os.Handler.dispatchMessage(Handler.java:99) 02-14 21:01:35.825: E/AndroidRuntime(9424): at android.os.Looper.loop(Looper.java:154) 02-14 21:01:35.825: E/AndroidRuntime(9424): at android.app.ActivityThread.main(ActivityThread.java:4945) 02-14 21:01:35.825: E/AndroidRuntime(9424): at java.lang.reflect.Method.invokeNative(Native Method) 02-14 21:01:35.825: E/AndroidRuntime(9424): at java.lang.reflect.Method.invoke(Method.java:511) 02-14 21:01:35.825: E/AndroidRuntime(9424): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 02-14 21:01:35.825: E/AndroidRuntime(9424): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 02-14 21:01:35.825: E/AndroidRuntime(9424): at dalvik.system.NativeStart.main(Native Method) 02-14 21:01:35.825: E/AndroidRuntime(9424): Caused by: java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to android.widget.AbsListView$SavedState 02-14 21:01:35.825: E/AndroidRuntime(9424): at android.widget.AbsListView.onRestoreInstanceState(AbsListView.java:1596) 02-14 21:01:35.825: E/AndroidRuntime(9424): at android.view.View.dispatchRestoreInstanceState(View.java:9977) 02-14 21:01:35.825: E/AndroidRuntime(9424): at android.view.ViewGroup.dispatchThawSelfOnly(ViewGroup.java:2346) 02-14 21:01:35.825: E/AndroidRuntime(9424): at android.widget.AdapterView.dispatchRestoreInstanceState(AdapterView.java:778) 02-14 21:01:35.825: E/AndroidRuntime(9424): at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2332) 02-14 21:01:35.825: E/AndroidRuntime(9424): at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2332) 02-14 21:01:35.825: E/AndroidRuntime(9424): at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2332) 02-14 21:01:35.825: E/AndroidRuntime(9424): at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2332) 02-14 21:01:35.825: E/AndroidRuntime(9424): at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2332) 02-14 21:01:35.825: E/AndroidRuntime(9424): at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2332) 02-14 21:01:35.825: E/AndroidRuntime(9424): at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2332) 02-14 21:01:35.825: E/AndroidRuntime(9424): at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2332) 02-14 21:01:35.825: E/AndroidRuntime(9424): at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2332) 02-14 21:01:35.825: E/AndroidRuntime(9424): at android.view.View.restoreHierarchyState(View.java:9955) 02-14 21:01:35.825: E/AndroidRuntime(9424): at com.android.internal.policy.impl.PhoneWindow.restoreHierarchyState(PhoneWindow.java:1671) 02-14 21:01:35.825: E/AndroidRuntime(9424): at android.app.Activity.onRestoreInstanceState(Activity.java:939) 02-14 21:01:35.825: E/AndroidRuntime(9424): at android.app.TabActivity.onRestoreInstanceState(TabActivity.java:84) 02-14 21:01:35.825: E/AndroidRuntime(9424): at android.app.Activity.performRestoreInstanceState(Activity.java:911) 02-14 21:01:35.825: E/AndroidRuntime(9424): at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1132) 02-14 21:01:35.825: E/AndroidRuntime(9424): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2172) 02-14 21:01:35.825: E/AndroidRuntime(9424): ... 12 more
This line in manifest doesn't help:
android:configChanges="orientation|keyboardHidden"
And one thing else: in my activity i use custom view (horizontal ListView) from https://github.com/dinocore1/DevsmartLib-Android
The app is working fine without this custom view, but i need to use it.
解决方案Unfortunately i don't have enough reputation to post images.
XML files are not images, and layouts are XML files.
I found that if i remove listview from first tab or HorizontalListView from the second, i can change orientation without any problem
That, plus your symptoms, suggests that you named those two widgets with the same
android:id
value. That will not work, as their saved states are not the same. Either make them be both the same class, or name them something different.这篇关于在方向改变类转换异常(Android版)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!