ActionBarSherlock & ShareActionProvider causar InflateException

Im un edificio de una aplicación que utiliza ActionBarSherlock y es ShareActionProvider para generar una intención de otras aplicaciones. Creé el artículo basado en el código de la muestra de la página del github de la biblioteca; Al principio, trabajé impecablemente. Sin embargo, un día después de eso, simplemente dejó de funcionar. Si elimino el código con respecto a la inflación del menú, la actividad se carga normalmente, de lo contrario se bloquea con la siguiente excepción:

05-31 22:28:41.200: E/AndroidRuntime(15874): FATAL EXCEPTION: main 05-31 22:28:41.200: E/AndroidRuntime(15874): android.view.InflateException: Binary XML file line #26: Error inflating class <unknown> 05-31 22:28:41.200: E/AndroidRuntime(15874): at android.view.LayoutInflater.createView(LayoutInflater.java:613) 05-31 22:28:41.200: E/AndroidRuntime(15874): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 05-31 22:28:41.200: E/AndroidRuntime(15874): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:660) 05-31 22:28:41.200: E/AndroidRuntime(15874): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685) 05-31 22:28:41.200: E/AndroidRuntime(15874): at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 05-31 22:28:41.200: E/AndroidRuntime(15874): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 05-31 22:28:41.200: E/AndroidRuntime(15874): at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 05-31 22:28:41.200: E/AndroidRuntime(15874): at com.actionbarsherlock.widget.ActivityChooserView.<init>(ActivityChooserView.java:229) 05-31 22:28:41.200: E/AndroidRuntime(15874): at com.actionbarsherlock.widget.ActivityChooserView.<init>(ActivityChooserView.java:202) 05-31 22:28:41.200: E/AndroidRuntime(15874): at com.actionbarsherlock.widget.ActivityChooserView.<init>(ActivityChooserView.java:192) 05-31 22:28:41.200: E/AndroidRuntime(15874): at com.actionbarsherlock.widget.ShareActionProvider.onCreateActionView(ShareActionProvider.java:164) 05-31 22:28:41.200: E/AndroidRuntime(15874): at com.actionbarsherlock.internal.view.ActionProviderWrapper.onCreateActionView(ActionProviderWrapper.java:23) 05-31 22:28:41.200: E/AndroidRuntime(15874): at android.view.ActionProvider.onCreateActionView(ActionProvider.java:98) 05-31 22:28:41.200: E/AndroidRuntime(15874): at com.android.internal.view.menu.MenuItemImpl.getActionView(MenuItemImpl.java:580) 05-31 22:28:41.200: E/AndroidRuntime(15874): at com.android.internal.view.menu.ActionMenuPresenter.getItemView(ActionMenuPresenter.java:235) 05-31 22:28:41.200: E/AndroidRuntime(15874): at com.android.internal.view.menu.ActionMenuPresenter.flagActionItems(ActionMenuPresenter.java:513) 05-31 22:28:41.200: E/AndroidRuntime(15874): at com.android.internal.view.menu.MenuBuilder.flagActionItems(MenuBuilder.java:1048) 05-31 22:28:41.200: E/AndroidRuntime(15874): at com.android.internal.view.menu.BaseMenuPresenter.updateMenuView(BaseMenuPresenter.java:91) 05-31 22:28:41.200: E/AndroidRuntime(15874): at com.android.internal.view.menu.ActionMenuPresenter.updateMenuView(ActionMenuPresenter.java:268) 05-31 22:28:41.200: E/AndroidRuntime(15874): at com.android.internal.view.menu.MenuBuilder.dispatchPresenterUpdate(MenuBuilder.java:244) 05-31 22:28:41.200: E/AndroidRuntime(15874): at com.android.internal.view.menu.MenuBuilder.onItemsChanged(MenuBuilder.java:946) 05-31 22:28:41.200: E/AndroidRuntime(15874): at com.android.internal.view.menu.MenuBuilder.startDispatchingItemsChanged(MenuBuilder.java:969) 05-31 22:28:41.200: E/AndroidRuntime(15874): at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:488) 05-31 22:28:41.200: E/AndroidRuntime(15874): at com.android.internal.policy.impl.PhoneWindow.invalidatePanelMenu(PhoneWindow.java:819) 05-31 22:28:41.200: E/AndroidRuntime(15874): at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:3148) 05-31 22:28:41.200: E/AndroidRuntime(15874): at android.os.Handler.handleCallback(Handler.java:615) 05-31 22:28:41.200: E/AndroidRuntime(15874): at android.os.Handler.dispatchMessage(Handler.java:92) 05-31 22:28:41.200: E/AndroidRuntime(15874): at android.os.Looper.loop(Looper.java:137) 05-31 22:28:41.200: E/AndroidRuntime(15874): at android.app.ActivityThread.main(ActivityThread.java:4898) 05-31 22:28:41.200: E/AndroidRuntime(15874): at java.lang.reflect.Method.invokeNative(Native Method) 05-31 22:28:41.200: E/AndroidRuntime(15874): at java.lang.reflect.Method.invoke(Method.java:511) 05-31 22:28:41.200: E/AndroidRuntime(15874): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006) 05-31 22:28:41.200: E/AndroidRuntime(15874): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773) 05-31 22:28:41.200: E/AndroidRuntime(15874): at dalvik.system.NativeStart.main(Native Method) 05-31 22:28:41.200: E/AndroidRuntime(15874): Caused by: java.lang.reflect.InvocationTargetException 05-31 22:28:41.200: E/AndroidRuntime(15874): at java.lang.reflect.Constructor.constructNative(Native Method) 05-31 22:28:41.200: E/AndroidRuntime(15874): at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 05-31 22:28:41.200: E/AndroidRuntime(15874): at android.view.LayoutInflater.createView(LayoutInflater.java:587) 05-31 22:28:41.200: E/AndroidRuntime(15874): ... 33 more 05-31 22:28:41.200: E/AndroidRuntime(15874): Caused by: android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x2/d=0x7f01000f a=-1} 05-31 22:28:41.200: E/AndroidRuntime(15874): at android.content.res.Resources.loadDrawable(Resources.java:1925) 05-31 22:28:41.200: E/AndroidRuntime(15874): at android.content.res.TypedArray.getDrawable(TypedArray.java:601) 05-31 22:28:41.200: E/AndroidRuntime(15874): at android.view.View.<init>(View.java:3436) 05-31 22:28:41.200: E/AndroidRuntime(15874): at android.view.ViewGroup.<init>(ViewGroup.java:432) 05-31 22:28:41.200: E/AndroidRuntime(15874): at android.widget.FrameLayout.<init>(FrameLayout.java:101) 05-31 22:28:41.200: E/AndroidRuntime(15874): at android.widget.FrameLayout.<init>(FrameLayout.java:97) 05-31 22:28:41.200: E/AndroidRuntime(15874): ... 36 more 

Como puede ver, no hay nada que apunte a mi código; Seguí el problema hasta la primera línea de este método:

 public class NewsDetailActivity extends SherlockFragmentActivity{ . . . @Override public boolean onCreateOptionsMenu(Menu menu) { getSupportMenuInflater().inflate(R.menu.news_detail, menu); //mShareActionProvider = (ShareActionProvider) menu.findItem(R.id.share).getActionProvider(); //mShareActionProvider.setShareHistoryFileName(ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME); return super.onCreateOptionsMenu(menu); } 

Si se elimina esa línea, la actividad funciona bien. El diseño del menú se muestra a continuación:

 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/share" android:title="@string/share" android:showAsAction="ifRoom" android:actionProviderClass="com.actionbarsherlock.widget.ShareActionProvider"/> </menu> 

No he podido resolver el problema y no he podido encontrar a alguien con un problema similar. Sin embargo, leí en el wiki de la biblioteca que los temas podrían ser el problema, el siguiente es el tema de mi aplicación y barra de acción, lo he cambiado a Theme.Sherlock.Light y muchos otros en vano.

 <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="AppBaseTheme" parent="Theme.Sherlock"> <item name="actionBarStyle">@style/ActionBar</item> <item name="android:actionBarStyle">@style/ActionBar</item> </style> <style name="ActionBar" parent="@style/Widget.Sherlock.ActionBar"> <item name="android:textColor">#ffffff</item> <item name="android:textStyle">bold</item>> <item name="android:background">@drawable/background_actionbar</item> <item name="android:backgroundStacked">@drawable/background_actionbar</item> <item name="android:backgroundSplit">@drawable/background_actionbar</item> </style> </resources> 

Estoy usando la última versión de la biblioteca. ¡Espero que alguien me ayude! ¡Gracias!

EDIT: No he sido capaz de resolver el problema, pero rastreé la Excepción hasta este XML en ActionBarSherlock (layout / abs_activity_chooser_view.xml):

 <com.actionbarsherlock.internal.widget.IcsLinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/abs__activity_chooser_view_content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" style="?attr/activityChooserViewStyle"> <FrameLayout android:id="@+id/abs__expand_activities_button" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_gravity="center" android:focusable="true" android:addStatesFromChildren="true" android:background="?attr/actionBarItemBackground"> <ImageView android:id="@+id/abs__image" android:layout_width="56dip" android:layout_height="36dip" android:layout_gravity="center" android:paddingTop="2dip" android:paddingBottom="2dip" android:paddingLeft="12dip" android:paddingRight="12dip" android:scaleType="fitCenter" android:adjustViewBounds="true" /> </FrameLayout> <FrameLayout android:id="@+id/abs__default_activity_button" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_gravity="center" android:focusable="true" android:addStatesFromChildren="true" android:background="?attr/actionBarItemBackground"> <ImageView android:id="@+id/abs__image" android:layout_width="56dip" android:layout_height="36dip" android:layout_gravity="center" android:paddingTop="2dip" android:paddingBottom="2dip" android:paddingLeft="12dip" android:paddingRight="12dip" android:scaleType="fitCenter" android:adjustViewBounds="true" /> </FrameLayout> </com.actionbarsherlock.internal.widget.IcsLinearLayout> 

Parece que la excepción es causada por FrameLayout.

EDIT 2: Ok, he encontrado una manera de detener la aplicación de estrellarse. Quité el tema personalizado de mi aplicación y el estilo de la barra de acción, dejando el tema de la aplicación como:

 <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/Theme.Sherlock" > 

Esto funciona bien, sin embargo, he perdido la posibilidad de personalizar la barra de acción .

Cambia el estilo de tu actividad a android: theme = "@ style / Theme.Sherlock" en AndroidManifest.xml

Algo como esto

  <activity android:name=".MainActivity" android:theme="@style/Theme.Sherlock"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> 

Si establece el tema en onCreate, podrá utilizar sus estilos personalizados sin obtener errores o bloqueos.

 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTheme(R.style.YourCustomTheme); ...} 

No se siente como si llegara a la raíz del problema, pero al menos le da algunas opciones.

Tuve el mismo problema, pero estaba creando el ShareActionProvider de código. Usar getSupportActionBar().getThemedContext() para el primer argumento en ShareActionProvider's constructor ShareActionProvider's resolvió esto.

Supongo que este es un tema tema. Trata de cambiar:

 <style name="ActionBar" parent="@style/Widget.Sherlock.ActionBar"> 

a

 <style name="ActionBar" parent="Widget.Sherlock.ActionBar.Solid"> 
  • Uso de ShareActionProvider con el botón en el diseño
  • Estilo de menú ShareActionProvider
  • ShareActionProvider con un icono - buscando como simple actionitem
  • Icono personalizado de Android ShareActionProvider?
  • Comparte el menú usando android.support.v7 no muestra los iconos de las aplicaciones
  • Cómo eliminar YourSelf de la lista ShareActionProvider
  • ShareActionProvider para el nivel de API inferior a 14
  • ¿Pasar la URL de WebView a ShareActionProvider?
  • Android: ShareActionProvider sin historial
  • Aspecto de ShareActionProvider
  • No se puede emitir Proveedor de acciones para compartir el proveedor de acciones
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.