Menu运行时动态删除item

在系统调用onCreateOptionsMenu()之后,它保留了你填充菜单中的一个实例且不会再调用onCreateOptionsMenu(),除非菜单出于某种原因失效了。然而,你可以使用onCreateOptionsMenu()去创建一个有效的菜单状态且不能在Activity的生命周期内改变。如果你想要在Activity的生命周期内基于事件修改选项菜单,你需要在onPrepareOptionsMenu()方法中实现。只有目前存在菜单对象这个方法才能通过,那么你就可以修改它,例如增加,移除或者使选项失效。(Fragment也可以提供一个onPrepareOptionsMenu()的回调)。

在Android 2.3.x或者更低的版本中,当用户每次打开选项菜单(通过点击菜单按钮)时系统都会调用onPrepareOptionsMenu()。在Android 3.0或者更高版本中,当菜单项提交在动作条时选项菜单被认为是始终打开的。当一个事件发生且你想要执行一个菜单的更新,那么你必须调用invalidateOptionsMenu()这个方法去反馈系统调用的onPrepareOptionsMenu()方法。

注意:你永远不应该改变基于在选项菜单中目前处于焦点View的的选项。当其处于触点状态(用户没有使用循迹球或者d-pad),视图不能处于焦点状态,所以你永远不能在选项菜单中使用焦点来改变选项。假如你想要为视图(View)提供一个上下文敏感的菜单项,请使用上下文菜单。


ps:首次点击menu键  onCreateOptionsMenu()-->onPrepareOptionsMenu()

之后点击menu键  将不再调用onCreateOptionsMenu();

所以可以在onPrepareOptionsMenu()中对menu进行增减item 等动作;

在上下文菜单时 onCreateContextMenu()-->onContextItemSelected

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值