ShareActionProvider no funciona cuando showAsAction = ifRoom

Estoy creando una pequeña aplicación y traté de proporcionar un botón Compartir en ActionBar. El código relevante se ve como a continuación:

Manifiesto

<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="18" /> 

Opción del menú

 <item android:id="@+id/shareMenuItem" android:showAsAction="never" android:title="@string/shareAction" android:orderInCategory="100" android:actionProviderClass="android.widget.ShareActionProvider"></item> 

Actividad

 public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); MenuItem shareItem = menu.findItem(R.id.shareMenuItem); mShareActionProvider = (ShareActionProvider) shareItem.getActionProvider(); return super.onCreateOptionsMenu(menu); } 

Todo funciona bien en este escenario. Quería mostrar el botón Compartir en ActionBar y cambiar showAsAction = "ifRoom". El botón Compartir aparece ahora en ActionBar, pero no se puede hacer clic.

Intenté cambiar otros artículos del menú a ifRoom, y están trabajando muy bien. Realmente no entiendo por qué el botón Compartir solo no funciona correctamente. Cualquier ayuda / sugerencias son apreciadas!

La razón del botón "shareAction" que no se puede hacer clic no tiene intención para su actionProvider (es una intención para la que Android podría encontrar una coincidencia).
Intente configurarlo mediante

 mShareActionProvider.setShareIntent(youIntentWithAction); 

Antes de regresar de onCreateOptionsMenu

Actualizar
Creo que funciona correctamente para el caso showAsAction = "nunca" sólo porque la intención se establece correctamente en el momento de abrir las opciones de desbordamiento (las marcadas con "nunca") y haga clic en shareItem y esto no sucede cuando lo tiene en la acción bar.
onPrepareOptionsMenu que estableció su intención de acción en la implementación de onPrepareOptionsMenu (si tiene uno), que sólo se llamará cuando abra elementos de overflow (+ una vez durante el inicio) y no para los elementos de acciónBar.

Una cosa importante es :
onOptionsItemSelected no es activado para menuItem con actionProvider , si se muestra en la barra de acción (es decir, actionProvider todavía activará onOptionsItemSelected en la acción del usuario si este actionProvider está en el menú de desbordamiento ).

Eso podría explicar por qué no tienes la oportunidad de establecer dinámicamente setShareIntent para tu actionProvider cuando showAsAction="ifRoom" .

Si todavía desea setShareIntent en onOptionsItemSelected , puede que tenga que hacerlo al manejar la selección de otro elemento ( non actionProvier ).

Déjeme saber si eso ayuda.

  • ShareActionProvider para el nivel de API inferior a 14
  • Configuración de un icono de recurso compartido en Actionbar ShareActionProvider
  • ShareActionProvider no se puede hacer clic y no se procesa correctamente en el primer procesamiento
  • ¿Pasar la URL de WebView a ShareActionProvider?
  • No se puede emitir de ActionProvider a ShareActionProvider
  • ShareActionProvider con un icono - buscando como simple actionitem
  • Estilo de menú ShareActionProvider
  • onPrepareSubMenu en un ActionProvider personalizado nunca llamado
  • ActionBarSherlock problema ShareActionProvider
  • Actualizar texto de ShareActionProvider
  • Cómo puedo obtener mi ShareActionProvider para enviar texto dinámicamente (de los oyentes) ver buscapersonas etc
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.