如何在Android中动态替换菜单

问题描述 投票:1回答:1

我有一个ListActivity(SherlockListActivity),其内容可以由用户动态更改。内容更改时,应替换选项菜单

作为我的learned,而不是onCreateOptionsMenu,我应该使用[假定每次用户选择菜单时都会调用的onPrepareOptionsMenu

在每次显示菜单之前都会调用它。

我有以下代码:

@Override
  public boolean onPrepareOptionsMenu(Menu menu)
  {
    menu.clear();
    if (UserOption == UserOption1)
      getSupportMenuInflater().inflate(R.menu.menu_option1, menu);
    else
      getSupportMenuInflater().inflate(R.menu.menu_option2, menu);
    return super.onPrepareOptionsMenu(menu);
  }

它在调试期间仅被调用一次,所以我总是有相同的菜单。

我应该设置什么才能使其正常工作?

android actionbarsherlock
1个回答
3
投票

创建并准备要更改的选项菜单及其项目选择方法

 @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        menu.clear();
        MenuInflater inflater = getMenuInflater();
        if(menuString=="red"){
        inflater.inflate(R.menu.red_menu, menu);
        }else if(menuString=="green"){
        inflater.inflate(R.menu.green_menu, menu);
        }
        return true;
    }


 @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle item selection
        switch (item.getItemId()) {
            case R.id.new_game:
                return true;
            case R.id.help:
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

就像您想更改菜单调用一样

String menuString="red or green";
invalidateOptionsMenu();

[和其他人一样,如果要使用静态菜单,请使用onCreateOptionsMenu,如果要动态更改其可见性,请使用onPrepareOptionsMenuonCreateOptionsMenu

© www.soinside.com 2019 - 2024. All rights reserved.