删除操作栏上的额外图标(使用ShareActionProvider和ActionBarSherlock时)

Luc*_*ota 5 android actionbarsherlock android-actionbar

我在我的项目中使用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;
}
Run Code Online (Sandbox Code Playgroud)

第二次尝试是从ActionBarSherlock重写一些类,以防止它显示额外的图标(如下所示:如何隐藏共享操作提供程序附近的共享操作(最常用)图标?).但是我遇到了这个解决方案的问题,因为我无法从我的自定义类中导入com.actionbarsherlock.widget.ActivityChooserModel(阻塞到外部包).即使将这个类复制到我的包中,也没有用(app崩溃)......

看起来这是一个非常平常的事情来禁用这个额外的图标,但我无法弄清楚为什么上面的解决方案对我不起作用...

提前感谢任何想法和sugestions

fll*_*llo 3

我不知道你是否解决了你的问题,但我有同样的问题来删除ShareActionProvider. 我尝试了所有方法,我发现的接近答案与您相同(如何隐藏共享操作图标?)。
经过一番研究,我在第二条评论中发现了这个技巧:
Action Bar Sherlock has depreciatedmethods

  1. 将ABS 中的3 个类ShareActionProviderActivityChooserView和)复制/粘贴到您的包中。ActivityChooverModel
  2. 用您自己的包替换您的导入。
  3. if (activityCount > 0 && historySize > 0)在新if (false)ActivityChooserView.
    (您将收到错误:“setActived”不适用于您当前的版本)
  4. 保存并关闭课程。
  5. 将 menu.xml 中的类替换为android:actionProviderClass="com.myapp.ShareActionProvider"
  6. 在您的 中Manifest,使minSdkVersion等于 11。保存您的项目。打扫。
  7. 返回到您的Manifest,将您的替换minSdkVersion为您使用的旧的。保存并清洁。

它工作完美。请告诉我此提示是否解决了您的问题。