Android onCreateOptionsMenu将图标更改为启用/禁用

时间:2010-11-13 18:07:52

标签: android

我希望能够在Android中按下手机上的菜单按钮,并获得使用户能够切换开/关声音的菜单。我想要开/关状态的不同图像。

我知道如何创建菜单;但是,我很难将菜单按钮从一个图像更改为另一个图像。有没有人想到这个?

由于

以下是我的代码:

@Override
public boolean onCreateOptionsMenu(Menu menu) {


  MenuInflater inflater = getMenuInflater();
  inflater.inflate(R.layout.menu, menu);

    return true;
}

public boolean onOptionsItemSelected(MenuItem item) {

  // Handle item selection

  switch (item.getItemId()) {
  case R.id.EnableDisableSounds:

   if(musicflag == true)
   {  
   HighScores db = new HighScores(this);
   db.open();
   if(this.soundflag == true)
       db.insertSystem("1", "off", "on");
   else
    db.insertSystem("1", "off", "off");

   db.close();

   mp.pause();
      musicflag =  false;
   }
   else
   {
    HighScores db = new HighScores(this);
    db.open();
    if(this.soundflag == true)
        db.insertSystem("1", "on", "on");
    else
     db.insertSystem("1", "on", "off");

    db.close();

    mp.start();
    musicflag = true;
   }
    break;

  case R.id.EnableDisableMusic :
   if(soundflag == true) {

    HighScores db = new HighScores(this);
    db.open();

    if(this.musicflag == true)
        db.insertSystem("1", "on", "off");
    else 
     db.insertSystem("1", "off", "off");

    db.close();
       soundflag = false;
   }
   else if(soundflag == false) {
    HighScores db = new HighScores(this);
    db.open();

    if(this.musicflag == true)
        db.insertSystem("1", "on", "on");
    else
     db.insertSystem("1", "off", "on");

    db.close();
       soundflag = true;
   }

   break;
  case R.id.DeleteScores:
   HighScores db = new HighScores(this);
   db.open();
   db.DeleteDBTable();
   db.close();
   break;

  default:
      return super.onOptionsItemSelected(item);
  }

  return true;
}  

1 个答案:

答案 0 :(得分:0)

使用 onPrepareOptionsMenu 并在其中操纵Menu参数。

编辑:这与Dialogs的onCreate / onPrepare完全相同。在onCreate中,您正在初始化,在onPrepare中,您正在更新UI,例如,根据数据库中的布尔值检查复选框。