我在我的项目中使用 ActionBarSherlock,并想设置一个分享按钮以在 FB 等上发布内容......我通过这种方式实现了这一点:将项目添加到操作栏(使用 ActionBarSherlock)
您可能知道,ShareActionProvider 添加了第二个图标,其中包含最常用的共享选项。这意味着另一个应用程序的图标出现在我的操作栏中,我想阻止这种行为......我已经看到了 2 种可能的解决方案,但不幸的是,两者都对我不起作用:/
第一次尝试是在我的目标类中实现 OnShareTargetSelectedListener 并覆盖 onShareTargetSelected 方法(如:ActionBarSherlock - 共享内容图标问题)。但是额外的图标仍然存在......这是我的代码:
@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;
}
第二次尝试是从 ActionBarSherlock 重写一些类,以防止它显示额外的图标(如这里:如何在分享操作提供程序附近隐藏分享操作(使用最多)图标?)。但是我遇到了这个解决方案的问题,因为我无法从我的自定义类中导入 com.actionbarsherlock.widget.ActivityChooserModel (阻止到外部包)。即使将这个类复制到我的包中,它也没有用(应用程序崩溃)......
看起来禁用这个额外的图标是一件很平常的事情,但我不明白为什么上面的解决方案对我不起作用......
提前感谢您的任何想法和建议