Android 删除actionbar上的额外图标(使用ShareActionProvider和ActionBarSherlock时)

Android 删除actionbar上的额外图标(使用ShareActionProvider和ActionBarSherlock时),android,android-actionbar,actionbarsherlock,Android,Android Actionbar,Actionbarsherlock,我在我的项目中使用ActionBarSherlock,并想设置一个共享按钮,在FB等发布内容。。。我是这样做到的: 您可能知道,ShareActionProvider添加了第二个图标,其中包含最常用的共享选项。这意味着另一个应用程序的图标出现在我的操作栏中,我想阻止这种行为。。。我已经看到了两种可能的解决方案,但不幸的是,这两种方案对我都不起作用:/ 第一次尝试是,在我的目标类中,实现OnShareTargetSelectedListener并重写onShareTargetSelected方法(

我在我的项目中使用ActionBarSherlock,并想设置一个共享按钮,在FB等发布内容。。。我是这样做到的:

您可能知道,ShareActionProvider添加了第二个图标,其中包含最常用的共享选项。这意味着另一个应用程序的图标出现在我的操作栏中,我想阻止这种行为。。。我已经看到了两种可能的解决方案,但不幸的是,这两种方案对我都不起作用:/

第一次尝试是,在我的目标类中,实现OnShareTargetSelectedListener并重写onShareTargetSelected方法(如下所示:)。但额外的图标仍然存在。。。这是我的密码:

@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(被阻止到外部包)。即使将这个类复制到我的包中,它也不起作用(应用程序崩溃)

看起来禁用这个额外的图标是一件很平常的事情,但是我不明白为什么上面的解决方案对我不起作用


提前感谢您提出的任何想法和建议

我不知道您是否解决了问题,但我有同样的问题要删除
ShareActionProvider的历史记录
。我什么都试过了,结果几乎和你一样()。
经过一些研究,我在第二条评论中发现了这个窍门:

  • 3个类
    ShareActionProvider
    ActivityChooserView
    ActivityChooserverModel
    )从ABS复制/粘贴到您的软件包中
  • 用您自己的软件包替换您的导入
  • 在新的
    ActivityChooserView
    中,通过
    if(false)
    更改行
    if(activityCount>0&&historySize>0)
    (您将得到一个错误:“setActived”不适用于当前版本)
  • 保存它并关闭类
  • android:actionProviderClass=“com.myapp.ShareActionProvider”
  • 清单
    中,使
    minSdkVersion
    等于11。保存您的项目。清洁它
  • 返回您的
    清单
    ,用您使用的旧版本替换您的
    minsdk版本
    。保存和清洁 它工作得很好。让我知道这个技巧是否解决了您的问题。

    1)FLLO的上述解决方案完全适用于我,2)您可以导入ActionbarSherlock库并使用它,这样就不需要像上面提到的那样编辑代码。
    但我的观点是最好采用解决方案1)。。。。因为在最新版本中,他们使用了ActionBarCompat

    我建议您使用第二种解决方案。“即使将这个类复制到我的包中,它也不起作用(应用程序崩溃)”--使用LogCat检查与崩溃相关的Java堆栈跟踪。“看起来禁用这个额外的图标是一件很平常的事情”--你的证据是。。。什么,确切地说?在做同样的事情时,我在ShareActionProvider Extendes ActionProvider上遇到了错误??如何修复它你得到的确切错误是什么,@kingofmass?也许你需要发布一个与此相关的问题,并进一步解释你的问题。实际上,我无法导入com.android.internal.R;。。有什么帮助吗@Fllo我的目标是不发布任何问题,我想找出答案!!