如何隐藏选项菜单?

27

我正在使用选项选择菜单项,附有三个项目(共享、登录、注销)。如果选择登录项目,则转到登录活动并登录社交登陆(Facebook或google)中的任何一个。如果登录成功,则同时隐藏登录项目并显示注销项目。同样类型的,如果注销,则社交登陆将显示登录项目菜单。请帮助我...

输入图像描述


这篇文章中有一些好的答案:https://dev59.com/MGsy5IYBdhLWcg3wzBJ4#68490157 - Michael
3个回答

33

步骤:1) menu.xml中定义了三个菜单项:登录,退出和共享,在此之后默认将退出的可见性设置为false。

android:visible="false"

并使剩下的两个项目可见。这是可选的,因为在Android中默认情况下所有项目都是可见的。

步骤2:当您在登录活动中填充该XML时,不需要在活动中进行任何更改。在这些点上,我们仅显示登录和共享菜单项,并已将LogOff项目的可见性设置为“false”在XML中。

步骤3:当您处于主活动(在登录活动之后显示的活动)中时,请执行以下操作

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {

    inflater.inflate(R.menu.menu, menu);

    MenuItem item = menu.findItem(R.id.login_id);
            item.setVisible(false);//
    MenuItem item = menu.findItem(R.id.logOff_id);
            item.setVisible(true);
    super.onCreateOptionsMenu(menu, inflater);
}

此时您将获得“注销”和“共享”选项,因为我们已将登录菜单项的可见性设置为 false。


我在询问,如果登录Facebook或Google Plus,是否有任何一种方式可以隐藏登录项并显示注销菜单项。 - Krishnan

15

在登录成功后的Activity中,获取ActionBarmenuItem的句柄,并更改它的可见性状态。

getMenu().findItem(R.id.login_menu_id).setVisible(false);

如果您正在使用 Toolbar,那么它将会是这样的

toolbar.getMenu().findItem(R.id.login_menu_id).setVisible(false);

因此,setVisible(boolean)会更改menuItem的可见性。希望这可以帮助。


我在询问,如果登录Facebook或Google Plus中的任何一个,隐藏登录项,同时显示注销菜单项。 - Krishnan
是的,你可以使用上面相同的代码!你遇到了什么困难? - Kavin Prabhu
嗨,Kevin,我正在使用两个活动主活动和登录活动,以在主活动中创建菜单项(菜单:共享、登录、注销),我们进入登录活动->设置Facebook和Google Plus,如果Facebook登录则通过意图使用“registercallback方法”转到主活动,Google Plus也是如此,我的问题是菜单项无法正常工作。 - Krishnan

0

而且我们还可以通过索引在回调方法 onCreateOptionsMenu onPrepareOptionsMenu 中执行。

 @Override
 public boolean onPrepareOptionsMenu(Menu menu) {
     if(!(boolean)PrefUtils.getFromPrefs(this,Constants.IS_LOGIN,false)) {
         menu.getItem(1/*R.id.nav_settings*/).setVisible(false);
     }
     return super.onPrepareOptionsMenu(menu);
 }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接