Cómo usar el ShareActionProvider de Android

En la versión 4.0 de Android, ICS, se añadió una nueva forma de compartir contenido a través del ActionBar. Gracias a la versión 4.0.1 de ActionBarSherlock se puede usar en todas las versiones de Android. La documentación explica bien como implementar esta funcionalidad, pero me gustaría explicar un par de detalles en los que no he caído y que me han estado causando problemas:

  • Es muy importante definir correctamente el atributo android:actionProviderClass. En el ejemplo usa la clase nativa de Android, pero se ha de tener en cuenta que al usar ActionBarSherlock el provider es diferente, con lo cual quedaría algo así:
    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:id="@+id/menu_share"
              android:title="@string/share"
              android:showAsAction="ifRoom"
              android:actionProviderClass="com.actionbarsherlock.widget.ShareActionProvider" />
        ...
    </menu>
  • Se ha de hacer set al share de nuevo si el contenido cambia dinámicamente. En mi caso, como estaba usando un ViewPager, he creado un listener para hacer un set al share intent cada vez que cambiaba la página. Ha quedado de la siguiente forma:
    private class ViewPageChangeListener extends ViewPager.SimpleOnPageChangeListener {
        @Override
        public void onPageSelected(int pos) {
            if (mShareActionProvider != null) {
                mShareActionProvider.setShareIntent(createShareIntent());
            }
        }
    }

Para mi son los dos puntos más importantes a tener en cuenta a la hora de implementar el nuevo share action.