Sto usando ActionBarSherlock nel mio progetto, e si desidera impostare un pulsante di condivisione per inviare contenuti a FB ecc ecc ... ho realizzato che in questo modo: Adding items to action bar (using ActionBarSherlock)Remove extra a ActionBar (quando si utilizza ShareActionProvider e ActionBarSherlock)
Come forse saprai, ShareActionProvider aggiunge una seconda icona con l'opzione più utilizzata per la condivisione. Ciò significa che un'icona di un'altra app appare nella mia barra delle azioni, e voglio evitare questo comportamento ... Ho visto 2 possibili soluzioni per questo, e sfortunatamente entrambe non mi hanno funzionato:/
Il primo tentativo era, nella mia classe di destinazione, implementare OnShareTargetSelectedListener e sovrascrivere suShareTargetSelected metodo (come qui: ActionBarSherlock - Share Content icon issue). Ma l'icona in più rimane là ... qui è il mio codice:
@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;
}
Il secondo tentativo è stato quello di riscrivere alcune classi da ActionBarSherlock, per evitare che mostra l'icona extra (come qui: How to hide the share action (which use most) icon near the share action provider?). Ma ho avuto problemi con questa soluzione, dato che non sono riuscito a importare com.actionbarsherlock.widget.ActivityChooserModel dalle mie classi personalizzate (bloccate su pacchetti esterni). Anche se ho copiato questa classe nel mio pacchetto, non ha funzionato (l'app si blocca) ...
Sembra che sia una cosa abbastanza usuale per disabilitare questa icona extra, ma non sono riuscito a capire perché le soluzioni precedenti non l'hanno fatto t ha lavorato per me ...
Grazie in anticipo per tutte le idee e le sugestions
La seconda soluzione è l'approccio che consiglio. "Persino copiare questa classe sul mio pacchetto, non ha funzionato (l'app si blocca)": usa LogCat per esaminare la traccia dello stack Java associata al tuo arresto anomalo. "Sembra che sia una cosa abbastanza usuale per disabilitare questa icona extra" - e la tua prova di ciò è ... cosa, esattamente? – CommonsWare