1

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

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

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

4

1 回答 1

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
    }
}
于 2014-06-13T14:05:12.563 回答