gpt4 book ai didi

android - 更改 ActionBar 上的图标时遇到问题

转载 作者:行者123 更新时间:2023-11-30 04:16:40 25 4
gpt4 key购买 nike

我的应用程序在启动时调用网络服务来查看用户是否登录。如果他们已登录,则需要显示注销图标。如果他们未登录,则需要显示登录图标。如果他们的应用程序版本不支持登录,则需要继续不显示图标。

如何让图标在网络服务返回时显示?我无法调用 invalidateOptionsMenu() 因为我使用的是 2.3。此外,如果我尝试将它添加到 onPrepareOptionsMenu() 中,当您按下菜单按钮而不是 ActionBar 时,它会显示在菜单上。

最佳答案

我用这种方式做过类似的事情:

在您的操作栏菜单中,登录和注销项目已经存在(我建议将它们放在 xml 中而不是在代码中创建它,这样您就可以轻松地为项目分配一个 id)。然后在创建菜单时保留对菜单的引用,以便以后修改它。

Menu myActionBarMenu;

/**
* Creates action bar items.
*/
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menuNameHere, menu);
myActionBarMenu = menu;
}

然后,当您发现用户已登录时,将登录项的可见性设置为 false,如下所示:

myActionBarMenu.findItem(R.id.logInAction).setVisible(false);
myActionBarMenu.findItem(R.id.logOutAction).setVisible(true);

在用户注销的情况下反转可见性。

这将是您的 xml 菜单的样子:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
android:id="@+id/logInAction"
android:showAsAction="ifRoom"
android:title="Log In"/>
<item
android:id="@+id/logOutAction"
android:showAsAction="ifRoom"
android:title="Log Out"/>
</menu>

关于android - 更改 ActionBar 上的图标时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9878467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com