我在我的项目中使用ActionBarSherlock,并想设置一个分享按钮以在FB等处发布内容......我通过这种方式实现了:Adding items to action bar (using ActionBarSherlock)
如您所知,ShareActionProvider添加了第二个图标,其中包含最常用的共享选项。这意味着另一个应用程序的图标出现在我的操作栏中,我想要阻止这种行为...我已经看到了2个可能的解决方案,不幸的是两个都没有对我有用:/
在我的目标类中,首次尝试实现OnShareTargetSelectedListener并覆盖onShareTargetSelected方法(如此处:ActionBarSherlock - Share Content icon issue)。但额外的图标停留在那里......这是我的代码:
@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重写一些类,以防止它显示额外的图标(如:How to hide the share action (which use most) icon near the share action provider?)。但是我遇到了这个解决方案的问题,因为我无法从我的自定义类中导入com.actionbarsherlock.widget.ActivityChooserModel(被阻止到外部包)。即使将这个类复制到我的包中,也没有用(app崩溃)......
禁用这个额外的图标看起来很平常,但我无法弄清楚为什么上面的解决方案对我不起作用......
提前感谢任何想法和消息
答案 0 :(得分:3)
我不知道你是否解决了问题,但我有同样的问题要删除ShareActionProvider
的历史记录。我尝试了一切,我找到的答案与你的相同(How to hide the share action icon?)
经过一些研究,我在第二条评论中发现了这个伎俩:
Action Bar Sherlock has depreciated methods
ShareActionProvider
,ActivityChooserView
和ActivityChooverModel
)复制/粘贴到您的包中。if (activityCount > 0 && historySize > 0)
中更改if (false)
行ActivityChooserView
(您将收到错误:“setActived”不适用于您当前的版本) android:actionProviderClass="com.myapp.ShareActionProvider"
Manifest
中,将minSdkVersion
等于11.保存项目。打扫。 Manifest
,用您使用的旧minSdkVersion
替换{{1}}。保存并清洁。 完美无缺。如果这个提示解决了您的问题,请告诉我。
答案 1 :(得分:0)
1)FLLO的上述解决方案完全适合我,2)你可以导入ActionbarSherlock库并使用它,这样就不需要像上面提到的那样编辑代码了。 但是我的观点最好采用解决方案1)....因为在最新版本中他们使用了ActionBarCompat