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.
- Android AppCompat SearchView EditText falta línea inferior en pre-lollipop
- Barra de estado transparente de Android y barra de acción
- Cambio de la flecha del hilador, Appcompat v21
- Diseño del material de Android Studio ... styles.xml
- AppCompatEditText problema de coloración en piruleta y arriba
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.
- Actualizado a AppCompat v22.1.0 y ahora obtener "eliminar atributo" error
- Android: TextView no respeta el androide: TextViewStyle usando appcompat-v7 22.1.1
- Modo de Acción Contextual no filtrar toques
- Barra de acciones muestra el menú desplegable cuando sólo hay un elemento en el menú
- Cómo personalizar la fuente de subtítulos de la barra de acción?
- Barra de herramientas El tema ShareActionProvider siempre está oscuro
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(); }