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
- Cómo eliminar YourSelf de la lista ShareActionProvider
- ¿Cuál es el uso del espacio de nombres de aplicaciones en android xml
- Android ShareActionProvider funciona en el modo de depuración pero no en el dispositivo real
- Comparte el menú usando android.support.v7 no muestra los iconos de las aplicaciones
- Excepción de puntero nulo al usar el proveedor de acciones de la biblioteca de soporte
<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!
- Cómo diseñar el Share Action Provider en Android
- Barra de herramientas El tema ShareActionProvider siempre está oscuro
- ¿Cómo ocultar el icono de acción compartida (que utiliza más) cerca del proveedor de acciones compartidas?
- Uso de ShareActionProvider con el botón en el diseño
- Yo uso ShareActionProvider en PopupMenu, pero mostrar dos PopupMenu?
- Aspecto de ShareActionProvider
- Sólo cuatro opciones para ShareActionProvider con ActionBarSherlock
- Compartir imagen y texto a través de whatsapp
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.
- Establecer la configuración del bloqueo de pantalla interactivamente
- Cambio de homeAsUpIndicator icono en ActionbarSherlock no tiene efecto en ICS?