support inflating error actionbarcontainer android android-toolbar appcompat-v7-r21 android-savedstate

inflating - android support v7 widget actionbarcontainer



ClassNotFoundException al desmarcar android.support.v7.widget.Toolbar $ SavedState (3)

Enfrenté este problema cuando pasaba 2 objetos de parábola, uno de tipo A y otro de tipo B que contiene un objeto de tipo A. Los pasé en parceable array y mi problema se resolvió.

Estoy viendo el siguiente error en mis informes de fallas 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 suceder intermitentemente al reanudar una actividad. No accedo directamente a la clase SavedState en ningún código.

EDITAR: 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 mi actividad onCreate 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í recibo estos errores después de proguard.



Según la fuente de AAverin, https://code.google.com/p/android/issues/detail?id=196430 , la versión 24 de las herramientas de compilación incluye una solución.

Por ejemplo, cambiar la versión de las herramientas de construcción en build.gradle:

buildToolsVersion "24.0.0"

Alternativamente, evite choques por captura (en mi caso particular):

try { // Temporary fix for crash issue mapView.onCreate(savedInstanceState); } catch (Throwable t) { t.printStackTrace(); }