4

我遵循了本教程,该教程在此行中返回 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; 
  } 
}
4

2 回答 2

2

你不能。

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

来自onCreateOptionsMenu() 的 Android 文档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;
}
于 2013-04-25T07:45:08.197 回答
2

我记得,您可以使用 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;
    } 

我希望这行得通。

于 2013-04-25T08:35:28.037 回答