android那些事--上下文菜单


    /**
     * 此方法用于初始化上下文菜单 并只会在第一次初始化菜单时调用
     * 其中参数menu就是即将要显示的Menu的实例
     * 返回true 则显示该菜单  返回false不显示
     *
     * @param menu
     * @return
     */
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        return super.onCreateOptionsMenu(menu);
    }

    /**
     * 在onCreateOptionsMenu 方法调用后 菜单被显示前调用
     * 返回true显示该菜单 返回false 不显示
     *
     * @param menu
     * @return
     */
    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {

        return super.onPrepareOptionsMenu(menu);
    }

    /**
     * 菜单被关闭的时候被调用
     * 菜单被关闭有三种情景 menu按钮再次被点击  back被点击  某一个子菜单被选中
     *
     * @param menu
     */
    @Override
    public void onOptionsMenuClosed(Menu menu) {
        super.onOptionsMenuClosed(menu);
    }

    /**
     * 菜单项被点击的时候被调用
     *
     * @param item
     * @return
     */
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        return super.onOptionsItemSelected(item);
    }

添加菜单

从��的方法中可以看出可以在onCreateOptionMenu或者onPrepareOptionsMenu方法中创建菜单,同时需要注意的是通过这两个方法有两种添加菜单的方式

通过调用方法
public MenuItem add(int groupId, int itemId, int order, CharSequence title);
来完成菜单的添加,四个参数依次是
1.组id  如果不分组的话就写Menu.NONE
2.itemId 这个就是在子菜单被点击时用于判断区分用的id
3.子菜单的显示顺序  哪个菜单项在前面由这个参数的大小决定
4.标题 菜单显示的文本
通过调用布局文件添加
   public boolean onPrepareOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main,menu);
        return true;
    }

通过调用Activity的getMenuInflater 得到一个MenuInflater 在通过inflate方法加载布局文件中定义的菜单 这样就加载给第二个参数所对应的menu

在Fragment中添加菜单

在自己的Fragment中也有onCreateOptionMenu和onPrepareOptionsMenu这两个方法,通过在fragment中实现两个方法添加的菜单会被添加到已有菜单之后,选中菜单项时 fragment也会接收onOptionsItemSelected()回调.需要注意的是用户点击菜单的信息首先传递给activity 如果activity不处理 则传递给fragment

需要注意的是为了确保回调成功 需要在fragment的onCreate()方法中调用setHasOptionsMenu() 告知Options Menu  fragment要添加菜单项
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值