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

2023-12-23

我在我的项目中使用 ActionBarSherlock,并且想要设置一个共享按钮来在 FB 等处发布内容...我通过以下方式实现了这一点:将项目添加到操作栏(使用 ActionBarSherlock) https://stackoverflow.com/questions/19013294/adding-items-to-action-bar-using-actionbarsherlock/

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

第一次尝试是在我的目标类中实现 OnShareTargetSelectedListener 并重写 onShareTargetSelected 方法(如下所示:ActionBarSherlock - 共享内容图标问题 https://stackoverflow.com/questions/11067829/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 中的一些类,以防止它显示额外的图标(如下所示:如何隐藏共享操作提供程序附近的共享操作(使用最多的)图标? https://stackoverflow.com/questions/15755465/how-to-hide-the-share-action-which-use-most-icon-near-the-share-action-provide/)。但我遇到了这个解决方案的问题,因为我无法从我的自定义类导入 com.actionbarsherlock.widget.ActivityChooserModel (阻止到外部包)。即使将此类复制到我的包中,它也不起作用(应用程序崩溃)...

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

预先感谢您的任何想法和建议


我不知道你是否解决了你的问题,但我也遇到了同样的问题,需要删除历史记录ShareActionProvider。我尝试了一切,我发现的接近答案与你相同(如何隐藏分享操作图标? https://stackoverflow.com/a/17290249/2668136).
经过一番研究,我在第二条评论中发现了这个技巧:
Action Bar Sherlock 已弃用方法 https://stackoverflow.com/a/12655744/2668136

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐