当前位置: 移动技术网 > 移动技术>移动开发>Android > android Fragment中使用Toolbar

android Fragment中使用Toolbar

2019年03月07日  | 移动技术网移动技术  | 我要评论

在activity中可以直接使用

setsupportactionbar(toolbar);

就可以重写 oncreateoptionsmenu 和 onoptionsitemselected 方法;

但是在fragment中则需要

((appcompatactivity)getactivity()).setsupportactionbar(mtoolbar);

fragment中需要将 getactivity()转为appcompatactivity才能获取setsupportactionbar方法;

还有在fragment中还需要添加一行

sethasoptionsmenu(true);

才能调用 oncreateoptionsmenu 和 onoptionsitemselected 方法;

如果在  oncreateoptionsmenu 方法中存在判断比如当改变某个状态时某些菜单item不显示等,可以使用如下再重新调用  oncreateoptionsmenu 方法

getactivity().invalidateoptionsmenu();

例:

    @override
    protected void initlistener() {
        ((appcompatactivity)getactivity()).setsupportactionbar(mtoolbar);
        sethasoptionsmenu(true);
    }

    @override
    public void oncreateoptionsmenu(menu menu, menuinflater inflater) {
        inflater.inflate(r.menu.menu_edit_select,menu);
        if(showeditselect){
            menu.finditem(r.id.menu_edit).setvisible(true);
            menu.finditem(r.id.menu_cancel).setvisible(false);
        }else{
            menu.finditem(r.id.menu_edit).setvisible(false);
            menu.finditem(r.id.menu_cancel).setvisible(true);
        }
    }

    @override
    public boolean onoptionsitemselected(menuitem item) {
        switch (item.getitemid()){
            //当点击一个条目时,不显示另外一个
            case r.id.menu_edit:
                showeditselect = false;
                getactivity().invalidateoptionsmenu();
                break;
            case r.id.menu_cancel:
                showeditselect = true;
                getactivity().invalidateoptionsmenu();
                break;
        }
        return true;
    }

menu_edit_select.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/menu_edit"
        android:title="编辑"
        android:orderincategory="100"
        app:showasaction="ifroom|withtext"/>
    <item
        android:id="@+id/menu_cancel"
        android:title="取消"
        android:orderincategory="101"
        android:visible="false"
        app:showasaction="ifroom|withtext"/>
</menu>

实现在标题栏菜单处点击“编辑”就会在原来位置上显示“取消”,点击“取消”显示“编辑”。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网