android菜单项单击事件方法介绍

响应菜单项的单击动作:

一、实现OnMenuItemClickListener接口,再实现此接口的OnMenuItemClick(MenuItem item)方法;

二、使用Activity类的onOptionsItemSelected(MenuItem item)和onMenuItemSelected(int featureId , MenuItem item)方法来响应菜单线的单击事件。

这两个方法都有一个Item参数,用于传递被单击的菜单项的MenuItem对象,可以根据MenuItem接口的相应方法(例如,getTitle方法和getItemId方法)判断单击的是哪个菜单项。

三、这三种方法之间的区别

既然有三种方法,如果同时使用者三种方法,就会产生一个问题,他们都会起作用吗?如果都起作用,那么调用顺序呢?实际上,当onMenuItemClick方法返回true时,另外两种单击事件的相应方式都会失效,也就是系统不会去调用另外两种方法。如果不设置第一种方法,而同时使用了另外两种响应单击事件的方式,系统会根据在onMenuItemSelected方法中调用父类(Activity类)的onMenuItemSelected方法(即super.onMenuItemSelected(featureId,item))的位置来决定先调用onOptionItemSelected方法还是先调用onMenuItemSelected方法。

public boolean onMenuItemSelected(int featureId,MenuItem item){

             super.onMenuItemSelected(featureId,item);//这条语句调用了onOptionItemSelected方法

             Log.d("Tag","super.onMenuItemSelected");//如果将super语句放在Log语句之后,则会先执行onMenuItemSelected方法后在执行。

}

 

提示如何动态添加、修改和删除选项菜单:主要是获取menu对象,在调用onCreateOptionsMenu方法的时候保存menu参数。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 中,您可以使用以下代码处理上下文菜单项单击事件: 1. 在您的 Activity 中,重写 onContextItemSelected() 方法: ```java @Override public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_item_1: // 处理菜单项 1 的点击事件 return true; case R.id.menu_item_2: // 处理菜单项 2 的点击事件 return true; case R.id.menu_item_3: // 处理菜单项 3 的点击事件 return true; default: return super.onContextItemSelected(item); } } ``` 2. 在 onCreateContextMenu() 方法中,为每个菜单项设置一个唯一的 ID: ```java @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.context_menu, menu); // 设置菜单项 ID menu.findItem(R.id.menu_item_1).setItemId(R.id.context_menu_item_1); menu.findItem(R.id.menu_item_2).setItemId(R.id.context_menu_item_2); menu.findItem(R.id.menu_item_3).setItemId(R.id.context_menu_item_3); } ``` 3. 在布局文件中,为需要弹出上下文菜单的视图设置一个上下文菜单: ```xml <TextView android:id="@+id/text_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello, World!" android:longClickable="true" android:contextClickable="true" android:onClick="onClick" android:onLongClick="onLongClick" android:clickable="true" android:focusable="true" android:focusableInTouchMode="true" android:background="?android:attr/selectableItemBackground" android:padding="16dp" android:layout_marginTop="16dp" android:layout_gravity="center_horizontal" android:textAppearance="?android:attr/textAppearanceMedium" /> // 为 TextView 设置上下文菜单 registerForContextMenu(findViewById(R.id.text_view)); ``` 这样,当用户长按视图时,就会弹出上下文菜单,当用户点击菜单项时,框架会自动调用 onContextItemSelected() 方法

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值