We have a problem with Latest-Greatest API 22

13 views
Skip to first unread message

Michael Semenov

unread,
Oct 9, 2015, 1:47:02 PM10/9/15
to mcjug-...@googlegroups.com
This is what happens when you rotate the device:

10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime: FATAL EXCEPTION: main
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime: Process: org.mcjug.meetingfinder, PID: 2561
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime: java.lang.RuntimeException: 
Unable to start activity ComponentInfo{org.mcjug.meetingfinder/org.mcjug.aameetingmanager.meeting.FindMeetingFragmentActivity}: java.lang.IllegalArgumentException: 
Wrong state class, expecting View State but received class android.widget.ScrollView$SavedState instead. 
This usually happens when two views of different type have the same id in the same hierarchy. 
This view's id is id/findMeetingFragment. Make sure other views do not use the same id.
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3912)
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at android.app.ActivityThread.access$900(ActivityThread.java:144)
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1284)
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:102)
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:135)
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5221)
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:372)
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:  Caused by: java.lang.IllegalArgumentException: 
Wrong state class, expecting View State but received class android.widget.ScrollView$SavedState instead. 
This usually happens when two views of different type have the same id in the same hierarchy. 
This view's id is id/findMeetingFragment. Make sure other views do not use the same id.
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at android.view.View.onRestoreInstanceState(View.java:13645)
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at android.view.View.dispatchRestoreInstanceState(View.java:13621)
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2887)
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at android.view.View.restoreHierarchyState(View.java:13599)
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at android.support.v4.app.Fragment.restoreViewState(Fragment.java:465)
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:979)
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1136)
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1118)
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1927)
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:544)
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1220)
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at android.app.Activity.performStart(Activity.java:5953)
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2261)
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3912) 
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at android.app.ActivityThread.access$900(ActivityThread.java:144) 
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1284) 
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:102) 
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:135) 
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5221) 
10-09 12:42:02.689 2561-2561/org.mcjug.meetingfinder E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method) 

victor semenov

unread,
Oct 9, 2015, 2:22:18 PM10/9/15
to mcjug-...@googlegroups.com
Can you try to fix it? Hopefully its something simple.

--
You received this message because you are subscribed to the Google Groups "mcjug-android" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mcjug-androi...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Michael Semenov

unread,
Oct 9, 2015, 2:37:43 PM10/9/15
to mcjug-...@googlegroups.com
I will work on it later today. Or tonight.

Michael Semenov

unread,
Oct 10, 2015, 11:44:09 AM10/10/15
to mcjug-...@googlegroups.com
I think I have a solid theory about the cause of the problem. When the new API process Store/Restore on device rotation it goes through unnamed controls saving/recovering them. Our layout\find_meeting_fragment.xml has one layer layout with everything in single RelativeLayout
Inline image 1

Horizontal layout\find_meeting_fragment.xml has matreshka-doll containers with the ScrollView parent:
Inline image 2

This Scroll View does not match parent control on Vertical view and gives
 java.lang.RuntimeException:  Unable to start activity ComponentInfo{org.mcjug.meetingfinder/org.mcjug.aameetingmanager.meeting.FindMeetingFragmentActivity}: java.lang.IllegalArgumentException: 
Wrong state class, expecting View State but received class android.widget.ScrollView$SavedState instead.

So, the question is why do we have so different layouts for one page? What was the original purpose?

See you @1PM
Reply all
Reply to author
Forward
0 new messages