如何检测当用户选择菜单项与ShareActionProvider



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

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

有什么优雅的方法来拦截这个"共享"菜单元素点击事件吗?

好的,这里是解决方案:添加新的侦听器接口(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
    }
}

最新更新