10

My app gets crashed frequently when it goes from background to foreground. Scenerio: Suppose iam playing any games and my app is in recent list and after playing,if i selects app,it will crash and shows the error. There is no toolbar in my app,Only actionbar i used.

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.fcords.android/com.fcords.android.Home.HomeScreen.HomePage_New}: java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to android.support.v7.widget.Toolbar$SavedState
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2314)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2388)
        at android.app.ActivityThread.access$800(ActivityThread.java:148)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5312)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
 Caused by: java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to android.support.v7.widget.Toolbar$SavedState
        at android.support.v7.widget.Toolbar.onRestoreInstanceState(Toolbar.java:1048)
        at android.view.View.dispatchRestoreInstanceState(View.java:13639)
        at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2889)
        at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2895)
        at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2895)
        at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2895)
        at android.view.View.restoreHierarchyState(View.java:13617)
        at com.android.internal.policy.impl.PhoneWindow.restoreHierarchyState(PhoneWindow.java:1982)
        at android.app.Activity.onRestoreInstanceState(Activity.java:1032)
        at android.app.Activity.performRestoreInstanceState(Activity.java:987)
        at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1184)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2287)

           

Anybody face this issue?Thanks in advance.

KP_
  • 1,854
  • 25
  • 43

4 Answers4

25

Problem Fixed in my case:

Issue in my case is :

1:I have an id in xml which have same name as a layout.

ie:in my case ,i have a custom action bar layout named as "action_bar.xml" and an id in another layout as "+id/action_bar".So this cause problem when app is not in the memory and while recreating that page .

NOTE:DONT USE SAME ID/LAYOUT NAMES in more than one time in the app.

KP_
  • 1,854
  • 25
  • 43
  • 1
    In my case I am including multiple nexted layouts into a container layout using . These nested layouts had views with the same id . After making the nested ids unique the problem disappeared. – Gerrit Beuze Dec 03 '19 at 10:44
3

This can also happen in this edge case:

If you create a custom view programmatically inside the constructor of another parent view that has the AttributeSet parameter:

   public ToggleButtonDescriptive(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        this.toggleButton = new SquareToggleButton(ctx, attributeSet);
    }

DO NOT pass the AttributeSet to that child View:

toggleButton = new SquareToggleButton(ctx, attributeSet);

As passing the AttributeSet causes the child view to have the same id as the parent and thus Android tries to restore the parents SavedState to that child view or vice versa. Instead omit the AttributeSet parameter altogether, like this:

toggleButton = new SquareToggleButton(ctx);
Gala
  • 2,592
  • 3
  • 25
  • 33
  • 1
    Alternatively you can set the subview's id to a unique value: https://stackoverflow.com/a/15442898 – Suragch Aug 24 '18 at 06:20
1

In my case i have layout in my screen with ChipGroup and chips without id's. Then if I return to this screen from other's - I got this error "java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to android.widget.CompoundButton$SavedState". So just added id's to chip's and all works fine.

0

In my case I have created several custom components such as drop drow, Textinput, etc. all of them have some of the same structure as the same title, mandatory sign. all of the ids are the same and it wasn't a big issue at the moment as they were in different layouts.

but then it happens to occur this error

java.lang.ClassCastException: android.view.View$BaseSavedState cannot be cast to androidx.appcompat.widget.AppCompatSpinner$SavedState

then I change the all custom component inner components id to different. then the problem was solved to me.

Lasitha Lakmal
  • 486
  • 4
  • 17