-2

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

这是代码:

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

2 回答 2

3

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

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

logout = (MenuItem) menu.findViewById(R.id.menu_login);
于 2013-01-26T02:08:03.533 回答
-2

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

于 2013-01-29T03:57:07.337 回答