traduccion studio personalizar icono botones boton barra bar aƱadir agregar acciones android android-actionbar actionbarsherlock

android - studio - Eliminar icono adicional en la barra de acciones(cuando se usa ShareActionProvider y ActionBarSherlock)



boton action bar android (2)

Estoy usando ActionBarSherlock en mi proyecto y quiero configurar un botón para publicar contenido en FB, etc. Lo logré de esta manera: agregando elementos a la barra de acciones (usando ActionBarSherlock)

Como ya sabrá, ShareActionProvider agrega un segundo icono con la opción más utilizada para compartir. Eso significa que el ícono de otra aplicación está apareciendo en mi barra de acción, y quiero evitar ese comportamiento ... He visto 2 soluciones posibles para eso, y lamentablemente ninguno de los dos me funcionó: /

El primer intento fue, en mi clase objetivo, implementar OnShareTargetSelectedListener y anular el métodoShareTargetSelected (como aquí: ActionBarSherlock - Share Content icon issue ). 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 desde ActionBarSherlock, para evitar que muestre el ícono adicional (como aquí: Cómo ocultar el ícono de acción compartida (que más usa) cerca del proveedor de acciones compartidas? ). Pero tuve problemas con esta solución, ya que no podía importar com.actionbarsherlock.widget.ActivityChooserModel de mis clases personalizadas (bloqueado a paquetes externos). Incluso al copiar esta clase a mi paquete, no funcionó (se bloquea la aplicación) ...

Parece que es una cosa bastante común deshabilitar este ícono adicional, pero no pude entender por qué las soluciones anteriores no me funcionaron ...

Gracias de antemano por cualquier idea y sugerencia


1) The Above Solution by FLLO funciona exactamente para mí y también 2) puedes importar la biblioteca ActionbarSherlock Library y utilizarla para que no sea necesario editar el código mencionado anteriormente. Pero mi punto de vista es mejor ir con la solución 1) .... Porque en la última versión usaron ActionBarCompat


No sé si resolvió su problema, pero tuve el mismo problema para eliminar el historial de ShareActionProvider . Intenté todo y la respuesta más cercana que encontré fue la misma que tú ( ¿Cómo ocultar el icono de acción de compartir? ).
Después de algunas investigaciones, encontré este truco en el segundo comentario:
Action Bar Sherlock tiene métodos depreciados

  1. Copie / pegue las 3 clases ( ShareActionProvider , ActivityChooserView y ActivityChooverModel ) de ABS en su paquete.
  2. Reemplace la importación por la suya con su propio paquete.
  3. Cambie la línea if (activityCount > 0 && historySize > 0) por if (false) en su nuevo ActivityChooserView .
    (Aparecerá un error: "setActived" no está disponible para su versión actual)
  4. Guárdalo y cierra la clase.
  5. Reemplace la clase en su menú.xml su elemento por android:actionProviderClass="com.myapp.ShareActionProvider"
  6. En su Manifest , haga que minSdkVersion igual a 11. Guarde su proyecto. Límpialo.
  7. Regrese a su Manifest , reemplace su minSdkVersion por la antigua que utilizó. Guardar y limpiar

Funciona perfectamente Avíseme si este consejo resolvió su problema.