ClassNotFoundException al desmarcar android.support.v7.widget.Toolbar $ SavedState

Estoy viendo el siguiente error en mis informes de fallos de Android:

android.os.BadParcelableException: ClassNotFoundException when unmarshalling: android.support.v7.widget.Toolbar$SavedState at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2318) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2396) at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3974) at android.app.ActivityThread.access$900(ActivityThread.java:139) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1299) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:149) at android.app.ActivityThread.main(ActivityThread.java:5257) at java.lang.reflect.Method.invokeNative(Method.java) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609) at dalvik.system.NativeStart.main(NativeStart.java) Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: android.support.v7.widget.Toolbar$SavedState at android.os.Parcel.readParcelableCreator(Parcel.java:2154) at android.os.Parcel.readParcelable(Parcel.java:2104) at android.os.Parcel.readValue(Parcel.java:2020) at android.os.Parcel.readSparseArrayInternal(Parcel.java:2382) at android.os.Parcel.readSparseArray(Parcel.java:1742) at android.os.Parcel.readValue(Parcel.java:2077) at android.os.Parcel.readArrayMapInternal(Parcel.java:2321) at android.os.Bundle.unparcel(Bundle.java:249) at android.os.Bundle.getSparseParcelableArray(Bundle.java:1273) at com.android.internal.policy.impl.PhoneWindow.restoreHierarchyState(PhoneWindow.java:1744) at android.app.Activity.onRestoreInstanceState(Activity.java:1017) at android.app.Activity.performRestoreInstanceState(Activity.java:989) at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1138) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2284) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2396) at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3974) at android.app.ActivityThread.access$900(ActivityThread.java:139) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1299) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:149) at android.app.ActivityThread.main(ActivityThread.java:5257) at java.lang.reflect.Method.invokeNative(Method.java) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609) at dalvik.system.NativeStart.main(NativeStart.java) 

Parece que ocurre intermitentemente al reanudar una actividad. No tengo acceso directo a la clase SavedState en ningún código.

EDIT: Layout Xml para mi actividad es

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white" android:orientation="vertical"> <include layout="@layout/toolbar" /> .... 

Y la barra de herramientas XML es

 <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimary" android:minHeight="?attr/actionBarSize" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/> 

Y en la actividad de mi Actividad lo hago

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_show_txn); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); localBroadcastManager = LocalBroadcastManager.getInstance(getApplicationContext()); mResources = getResources(); if (savedInstanceState != null) { long id = savedInstanceState.getLong(STA_TXN_ID); ... } else { ... read fresh } mDateTV = (TextView) findViewById(R.id.ASTVDate); mDayTV = (TextView) findViewById(R.id.ASTVDay); mCatName = (TextView) findViewById(R.id.ASTVCatName); mMonthTV = (TextView) findViewById(R.id.ASTVMonth); .... Calendar c = java.util.Calendar.getInstance(); c.setTime(txn.getTxnDate()); mDateTV.setText("" + c.get(Calendar.DAY_OF_MONTH)); mDayTV.setText(c.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.US)); mMonthTV.setText(c.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.US)); } 

Y he estado usando appcompat-v7: 22.1.1 y sí me sale de estos errores después de proguard.

Parece que el problema siguiente es exactamente sobre él: https://code.google.com/p/android/issues/detail?id=196430

Según la fuente de AAverin, Google Issue 196430 , las herramientas de construcción de la versión 24 incluyen una corrección.

EG cambia la versión de las herramientas de construcción en build.gradle:

 buildToolsVersion "24.0.0" 

Alternativamente, evitar los accidentes por la captura (en mi caso particular):

 try { // Temporary fix for crash issue mapView.onCreate(savedInstanceState); } catch (Throwable t) { t.printStackTrace(); } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.