如何检测用户何时使用ShareActionProvider选择菜单项?

时间:2014-06-12 14:36:17

标签: android shareactionprovider

我的Android应用程序存在小问题。我正在创建标准菜单(使用onCreateOptionsMenu)。我的一个菜单元素是分享按钮。此共享元素使用OnShareTargetSelectedListener来拦截单击了哪个共享选项。

问题是 - 我需要知道用户是否点击了这个"分享"菜单项(不与所有共享选项共享子元素,如" Facebook","蓝牙","电子邮件"等)。在onMenuItemSelected中,当" share"点击。

有没有任何优雅的方式来拦截这个"分享"菜单元素点击事件?

1 个答案:

答案 0 :(得分:1)

好的,这是解决方案:添加新的侦听器接口(ShareMenuListener.java):

public interface ShareMenuListener {
    public void onMenuVisibilityChanged(boolean visible);

}

扩展ShareActionProvider(CustomShareActionProvider.java)

public class CustomShareActionProvider extends ShareActionProvider {

private ShareMenuListener mListener;

public CustomShareActionProvider(Context context) {
    super(context);
}

@Override
public void subUiVisibilityChanged(boolean isVisible) {
    super.subUiVisibilityChanged(isVisible);
    mListener.onMenuVisibilityChanged(isVisible);
}

public void setShareMenuListener(ShareMenuListener listener) {
    mListener = listener;
}
}

然后在您的活动或片段中,使用CustomShareActionProvider而不是标准的ShareActionProvider并实现ShareMenuListener接口。实现onMenuVisibilityChanged方法以执行自定义操作:

@Override
public void onMenuVisibilityChanged(boolean visible) {
    if(visible) {
        // Do your custom action here
    }
}