Eliminar icono extra en la barra de acción (cuando se utiliza ShareActionProvider y ActionBarSherlock)
Estoy usando ActionBarSherlock en mi proyecto, y quiero establecer un botón de compartir para publicar contenido en FB etc etc … Logré que de esta manera: Agregar elementos a la barra de acción (con ActionBarSherlock)
Como sabrás, ShareActionProvider agrega un segundo icono con la opción más utilizada para compartir. Eso significa que el icono de otra aplicación está apareciendo en mi barra de acción, y quiero evitar que el comportamiento … He visto 2 posibles soluciones para eso, y, por desgracia, no funcionó para mí: /
- Lengüetas de la barra de la acción de Androide - problemas internos del trasaction del fragmento
- ActionBarSherlock no admite cuadros de diálogo de alerta de luz-tema?
- Preferencias con ActionBar Sherlock
- ¿Cómo solucionar la barra de acción Sherlock pestañas de ancho inconsistencia?
- Causando un error de java.IllegalStateException, ninguna actividad, solamente cuando navega al fragmento por la SEGUNDA vez
El primer intento fue, en mi clase de destino, implementar OnShareTargetSelectedListener y sobreescribir el método onShareTargetSelected (como aquí: ActionBarSherlock – Contenido del icono de contenido ). Pero el icono extra permanece allí … aquí está mi código:
@Override public boolean onCreateOptionsMenu(Menu menu) { getSupportMenuInflater().inflate(R.menu.share, menu); mShareActionProvider = (ShareActionProvider) menu.findItem(R.id.share).getActionProvider(); Intent intent = getDefaultShareIntent(); mShareActionProvider.setOnShareTargetSelectedListener(this); if(intent!=null) mShareActionProvider.setShareIntent(intent); return super.onCreateOptionsMenu(menu); } @Override public boolean onShareTargetSelected(ShareActionProvider source, Intent intent) { this.startActivity(intent); // started activity ourself to prevent search history return true; }
El segundo intento fue reescribir algunas clases de ActionBarSherlock, para evitar que mostrara el ícono extra (como aquí: ¿Cómo ocultar el icono de acciones compartidas (que utilizan más) cerca del proveedor de acciones compartidas? ). Pero tengo problemas con esta solución, ya que no podía importar com.actionbarsherlock.widget.ActivityChooserModel de mis clases personalizadas (bloqueadas en paquetes externos). Incluso copiando esta clase a mi paquete, no funcionó (se bloquea la aplicación) …
Parece que es una cosa bastante habitual para desactivar este icono extra, pero no pude entender por qué las soluciones anteriores no funcionó para mí …
Gracias de antemano por cualquier idea y sugestions
- ActionBarSherlock: las pestañas que aparecen ABOVE barra de acciones con vista personalizada
- Manifiesto de Android Studio Faltando error en Gradle
- Android 2.0: Biblioteca de Actionbar de soporte (librería de soporte appcompat v7 sin recursos): No se encontró recurso @ style / Theme.AppCompat.Light.DarkActionBar
- Quitar ActionbarSherlock registra cuando BuildConfig.DEBUG
- Gestión de Fragmentos
- Cambiar tipo de letra títulos - ActionBarSherlock
- WindowBackground no cambia con el tema
- ActionBarSherlock setCustomView no funciona en Android 3.2
No sé si resolvió su problema pero tuve el mismo problema para eliminar el historial de ShareActionProvider
. Lo intenté todo y la respuesta cercana que encontré fue la misma que tú ( ¿Cómo ocultar el icono de acción compartida? ).
Después de algunas investigaciones, encontré este truco en el segundo comentario:
Barra de acción Sherlock ha depreciado métodos
- Copiar / pegar las 3 clases (
ShareActionProvider
,ActivityChooserView
yActivityChooverModel
) de ABS a su paquete. - Reemplace la importación por el suyo con su propio paquete.
- Cambie la línea
if (activityCount > 0 && historySize > 0)
porif (false)
en su nuevaActivityChooserView
.
(Usted recibirá un error: "setActived" no está disponible para su versión actual) - Guárdelo y cierre la clase.
- Reemplace la clase en su menu.xml su elemento por
android:actionProviderClass="com.myapp.ShareActionProvider"
- En su
Manifest
, haga que laminSdkVersion
igual a 11. Guarde su proyecto. Límpialo. - Vuelva a su
Manifest
, reemplace suminSdkVersion
por la antigua que utilizó. Guardar y limpiar.
Funciona perfectamente. Déjame saber si este consejo resolvió tu problema.
1) La solución de arriba por FLLO Exactamente funciona para mí y también 2) sólo puede importar la Biblioteca ActionbarSherlock y utilizarlo para que no hay necesidad de editar el código como aboved mencionado. Pero mi punto de vista es mejor ir con la solución 1) …. Porque en la última versión se utiliza el ActionBarCompat