我有我的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
}
}