我的应用程序中有PopupMenu,想知道它什么时候关闭。
使用API14 +,在使用setOnDismissListener()
添加dismiss侦听器时很容易。
但是,我需要知道PopupMenu何时从API11 +关闭,所以我不能使用监听器并需要一个替代侦听器。
我已经尝试过了:
dismiss()
方法,但在关闭时不会调用它。PopupMenu.OnMenuItemClickListener
,但当用户点击菜单外部(关闭它)或点击“返回”时,它不会被激活。我没有任何其他想法来检测菜单已关闭。所以我希望其他人有一个聪明的伎俩。否则我不能使用PopupMenu ...
答案 0 :(得分:1)
您可以尝试覆盖方法
public void onCloseMenu(MenuBuilder menu, boolean allMenusAreClosing)
PopupMenu
课程的。确切地说,此方法在API 14+内部调用setOnDismissListener()
。但这并不容易。问题是Android SDK中不包含类com.android.internal.view.menu.MenuBuilder
,因此如果您尝试导入此类,则无法编译代码。
但是,你可以创建自己的“假”实现,将它放在包com.android.internal.view.menu
中,用它制作一个.jar
文件,将这个“假库”复制到{{1}在IntelliJ IDEA的项目设置中将此库的文件夹和设置范围设置为“已提供”。这意味着此libs
文件中的类已经具有真实设备(这是真的),您只需要它们来编译代码。这里的主要想法 - 您的假jar
应该在MenuBuilder
编译的类路径中,但不应包含在结果javac
文件中。
这不是一个简单的解决方案,但应该可行。