Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何更改操作栏中菜单项的标题_Android_Menu_Android Actionbar_Title - Fatal编程技术网

Android 如何更改操作栏中菜单项的标题

Android 如何更改操作栏中菜单项的标题,android,menu,android-actionbar,title,Android,Menu,Android Actionbar,Title,我正在尝试更改一个actionbar菜单项的标题。当用户未登录时,它会显示登录,这是它的正常标题,但一旦用户登录,我希望它更改为注销。我现在所做的只是测试我是否可以让它工作,但每当我用代码运行它来更改标题时,它就会崩溃 代码如下: public MenuItem logout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState)

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

代码如下:

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();
    }

它正在崩溃,因为视图层次结构中不存在
MenuItem
,只有在创建或显示菜单时才会呈现它。您需要将代码放入或中,这取决于对您有意义的选项--
onCreateOptions菜单
在第一次显示菜单时调用一次,而每次显示菜单时调用
onPrepareOptions菜单

在这些函数中,您可以使用

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

我想出了解决这个问题的办法。我做的是创建两个菜单xml文件,然后在OnCreateOptions菜单中放入if语句,检查用户是否登录,并选择正确的菜单进行操作。

阅读logcat并检查它崩溃的原因(行号应该有帮助)@凯瑟:我认为例外情况是java.lang.NullPointerException您试图在错误的位置找到菜单项。它总是会为空,因为
R.id.menu\u login
是菜单的一部分,而不是活动布局。@A--C如何查找它?iagreen的答案有效,也可以阅读。@Adonai没有日志,谁知道它在哪里崩溃。您可能有多个问题。是的,很抱歉,我要发布错误,但我正在阅读一条--C注释。我相信这个错误是com.android.internal.view.menu.MenuBuilder无法转换为android.view.view,我认为这是因为当我把你给我的代码放在onCreateOptionMenu中时,它告诉我在没有它的情况下转换为view会出错。