我的Android应用程序存在小问题。我正在创建标准菜单(使用onCreateOptionsMenu)。我的一个菜单元素是分享按钮。此共享元素使用OnShareTargetSelectedListener来拦截单击了哪个共享选项。
问题是 - 我需要知道用户是否点击了这个"分享"菜单项(不与所有共享选项共享子元素,如" Facebook","蓝牙","电子邮件"等)。在onMenuItemSelected中,当" share"点击。
有没有任何优雅的方式来拦截这个"分享"菜单元素点击事件?
答案 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
}
}