【问题标题】:How to change the title of a menu item in the action bar如何更改操作栏中菜单项的标题
【发布时间】:2013-01-26 01:59:12
【问题描述】:

我正在尝试更改我的操作栏菜单项之一的标题。当用户未登录时,它会显示登录,这是它的正常标题,但是一旦用户登录,我希望它更改为注销。我现在所拥有的只是测试我是否可以让它工作,但是每当我使用代码运行它来更改标题时,它就会崩溃。

代码如下:

public MenuItem logout;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        background = findViewById(R.id.status);
        status = findViewById(R.id.image); 
        logout = (MenuItem) findViewById(R.id.menu_login);
        logout.setTitle("Blah");
        new CheckStatusTask().execute();
    }

【问题讨论】:

  • 阅读 logcat 并检查它崩溃的原因(行号应该有帮助)
  • @Keyser 我相信例外是 java.lang.NullPointerException
  • 您试图在错误的位置找到菜单项。它总是为空,因为R.id.menu_login 是菜单的一部分,而不是 Activity 布局。
  • @A--C 我该如何找到它?
  • iagreen 的回答有效,也请阅读this

标签: android menu android-actionbar title


【解决方案1】:

它崩溃是因为MenuItem 不存在于视图层次结构中,它仅在创建或显示菜单时呈现。您需要将代码放入onCreateOptionsMenuOnPrepareOptionsMenu,这取决于对您有意义的情况——onCreateOptionsMenu 在菜单首次显示时调用一次,OnPrepareOptionsMenu 在每次显示时调用。

在这些功能中,您可以找到您的菜单项

logout = (MenuItem) menu.findViewById(R.id.menu_login);

【讨论】:

  • @Adonai 没有 logcat,谁知道它在哪里崩溃。您可能有多个问题。
  • 是的,很抱歉我要发布错误,但我正在阅读 A--C 评论。我相信错误是 com.android.internal.view.menu.MenuBuilder cannot be cast to android.view.View 我认为这是因为当我把你给我的代码放在 onCreateOptionMenu 中时它告诉我将它转换为 View没有它会出错。
【解决方案2】:

我想出了如何解决这个问题。我所做的是制作两个菜单 xml 文件,然后在 onCreateOptionsMenu 中放入 if 语句来检查用户是否已登录并选择正确的菜单来使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-05
    • 2014-01-20
    • 2012-04-13
    • 2013-04-11
    • 1970-01-01
    • 2013-12-05
    • 2020-11-13
    相关资源
    最近更新 更多