@ -38,7 +38,8 @@ public class DropdownMenu {//构建一个方法去弹出菜单,按钮与现实
mPopupMenu = new PopupMenu ( context , mButton ) ; //创建一个新的 PopupMenu 对象 mPopupMenu, 这个对象会和 mButton 相关联,当点击这个按钮时,会显示这个弹出菜单。
mMenu = mPopupMenu . getMenu ( ) ;
//通过调用 mPopupMenu.getMenu() 方法获取菜单对象 mMenu, 这个对象代表了弹出菜单的内容。
mPopupMenu . getMenuInflater ( ) . inflate ( menuId , mMenu ) ; //使用 getMenuInflater().inflate 方法来加载并设置弹出菜单的内容,传入的参数是菜单 ID 和菜单对象,这个方法会根据菜单 ID 加载对应的菜单资源(可能是一个 XML 文件定义的菜单布局),并将加载后的内容设置到菜单对象上。
mPopupMenu . getMenuInflater ( ) . inflate ( menuId , mMenu ) ;
//使用 getMenuInflater().inflate 方法来加载并设置弹出菜单的内容,传入的参数是菜单 ID 和菜单对象,,并将加载后的内容设置到菜单对象上。
mButton . setOnClickListener ( new OnClickListener ( ) {
public void onClick ( View v ) {
mPopupMenu . show ( ) ;
@ -47,10 +48,13 @@ public class DropdownMenu {//构建一个方法去弹出菜单,按钮与现实
}
public void setOnDropdownMenuItemClickListener ( OnMenuItemClickListener listener ) {
//定义处理菜单项点击事件的回调方法。
if ( mPopupMenu ! = null ) {
mPopupMenu . setOnMenuItemClickListener ( listener ) ;
//将用户定义的点击监听器设置为下拉菜单的点击监听器,以便当用户点击菜单项时,可以执行相应的操作。
}
}
//这个构造方这个方法允许用户设置一个自定义的点击监听器, 以便处理下拉菜单项的点击事件。但在设置监听器之前, 它会检查下拉菜单实例( mPopupMenu) 是否存在, 以避免在null对象上调用方法而导致的空指针异常。
public MenuItem findItem ( int id ) {
return mMenu . findItem ( id ) ;