如何在单个活动中显示2个不同的菜单选项

时间:2013-04-25 07:22:56

标签: android

我跟着this tutorial显示了此行中值返回True时的菜单选项:myMenuInflater.inflate(R.menu.menu, menu);

当值返回false时,如何添加其他菜单选项?我想在同一个菜单按钮中显示2个不同的菜单选项。我的代码:

import android.view.MenuItem;
import android.widget.Toast;
public class AndroidOptionMenu extends Activity {
  /** Called when the activity is first created. */ 
  @Override  public void onCreate(Bundle savedInstanceState)
  {      
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 
  } 
  @Override public boolean onCreateOptionsMenu(Menu menu)
  {
      MenuInflater myMenuInflater = getMenuInflater();
      myMenuInflater.inflate(R.menu.menu, menu);     
      return true;
  }
  @Override public boolean onOptionsItemSelected(MenuItem item) 
  {  
      switch(item.getItemId()) {   
      case(R.id.menu_OK):
          Toast.makeText(this, "OK", Toast.LENGTH_LONG).show(); 
          break; 
      case(R.id.menu_help):
          Toast.makeText(this, "Help", Toast.LENGTH_LONG).show();  
          break; 
      case(R.id.menu_Cancel):  
          Toast.makeText(this, "Cancel", Toast.LENGTH_LONG).show();
          break; 
      }   
      return true; 
  } 
}

2 个答案:

答案 0 :(得分:2)

你不能。

至少不使用onCreateOptionsMenu()的返回值。

来自Android Doc for onCreateOptionsMenu()You must return true for the menu to be displayed; if you return false it will not be shown.

您需要找到另一种方式来决定何时展示您的第一个以及何时展示第二个菜单,然后您可以这样做:

@Override public boolean onCreateOptionsMenu(Menu menu)
{
      MenuInflater myMenuInflater = getMenuInflater();
    if(showFirstMenu)
    {
        myMenuInflater.inflate(R.menu.menu, menu);     
    } else {
        myMenuInflater.inflate(R.menu.menu2, menu); // here you show the other menu
    }
      return true;
}

答案 1 :(得分:1)

我记得,您可以使用onPrepareOptionsMenu在运行时设置菜单中显示的菜单项。您可以将菜单项分组为第一个菜单或第二个菜单项,然后选择要显示的菜单项。 你可以试试;

    @Override 
    public boolean onPrepareOptionsMenu(Menu menu)
    {

        MenuInflater myMenuInflater = getMenuInflater();
        if(condition)
        {
          myMenuInflater.inflate(R.menu.menu, menu);     
        } else {
          myMenuInflater.inflate(R.menu.menu2, menu); // here you show the other menu
        }
        return true;
    } 

我希望有效。