我正在尝试更改其中一个操作栏菜单项的标题。当用户没有登录时,它说登录是正常的标题,但是一旦用户登录,我希望它改为登出。我现在所拥有的只是测试我是否可以使它工作,但每当我使用代码运行它来更改标题时它就会崩溃。
以下是代码:
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();
}
答案 0 :(得分:3)
崩溃是因为MenuItem
在视图层次结构中不存在,只有在创建或显示菜单时才会呈现它。您需要将代码放在onCreateOptionsMenu
或OnPrepareOptionsMenu
中,具体取决于对您有意义的内容 - 首次显示菜单时调用onCreateOptionsMenu
一次,OnPrepareOptionsMenu
为每次显示都会调用。
在这些功能中,您可以使用
找到您的菜单项logout = (MenuItem) menu.findViewById(R.id.menu_login);
答案 1 :(得分:-2)
我想出了如何解决这个问题。我做了两个菜单xml文件,然后在onCreateOptionsMenu我把if语句检查用户是否登录,并选择正确的菜单。