Używam ActionBarSherlock w moim projekcie, a chcesz ustawić przycisk współdzielenia, aby dodawać treści na FB etc etc ... I że osiągnięte w ten sposób: Adding items to action bar (using ActionBarSherlock)Usuń dodatkową ikonę na actionbar (przy użyciu ShareActionProvider i ActionBarSherlock)
Jak być może wiesz, ShareActionProvider dodaje drugą ikonę z najczęściej używaną opcją udostępniania. Oznacza to, że na moim pasku akcji pojawia się ikona innej aplikacji i chcę temu zapobiec ... Widziałem 2 możliwe rozwiązania tego problemu i niestety oba te problemy mi nie pomogły:/
Pierwsza próba był w mojej klasie docelowej, do wdrożenia OnShareTargetSelectedListener i zastąpić onShareTargetSelected metodę (jak tutaj: ActionBarSherlock - Share Content icon issue). Ale ekstra ikona pozostaje tam ... tutaj jest mój kod:
@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;
}
Druga próba była przepisać kilka klas z ActionBarSherlock, aby zapobiec wyświetlaniu dodatkowych ikony (jak tutaj: How to hide the share action (which use most) icon near the share action provider?). Ale mam problemy z tym rozwiązaniem, ponieważ nie mogłem zaimportować com.actionbarsherlock.widget.ActivityChooserModel z moich niestandardowych klas (zablokowane do zewnętrznych pakietów). Nawet skopiowanie tej klasy do mojego pakietu nie zadziałało (awarie aplikacji) ...
Wygląda na to, że jest całkiem zwyczajną rzeczą, aby wyłączyć tę dodatkową ikonę, ale nie mogłem zrozumieć, dlaczego powyższe rozwiązania nie ". t pracował dla mnie ...
Dzięki z góry za wszelkie pomysły i sugestie
Twoim drugim rozwiązaniem jest podejście, które polecam. "Nawet skopiowanie tej klasy do mojego pakietu nie zadziałało (awarie aplikacji)" - użyj LogCat, aby sprawdzić ślad stosu Java związany z awarią. "Wygląda na to, że to całkiem zwyczajna rzecz, aby wyłączyć tę dodatkową ikonę" - a twoim dowodem na to jest ... co, dokładnie? – CommonsWare