1

任何人都可以指出任何教程的方向,这些教程显示了如何使用 clicakble 检查创建选项菜单,如下图所示:


替代文字 http://img291.imageshack.us/img291/1221/deviceit.png


我试过如下:

/** Menu creation and setup **/

/* Creates the menu items */
public boolean onCreateOptionsMenu(Menu menu) {
 boolean result = super.onCreateOptionsMenu(menu);

    menu.add(0, 1, 0, "Speaker").setCheckable(true);
    menu.add(0, 2, 0, "Mute").setCheckable(true);
    return result;
}

/* Handles item selections */
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case 1:
  if(audioManager.isSpeakerphoneOn()==false){
   audioManager.setSpeakerphoneOn(true);
   audioManager.setRouting(AudioManager.MODE_IN_CALL,
      AudioManager.ROUTE_SPEAKER, AudioManager.ROUTE_ALL);
  }else{
   audioManager.setSpeakerphoneOn(false);
   audioManager.setRouting(AudioManager.MODE_IN_CALL,
      AudioManager.ROUTE_EARPIECE, AudioManager.ROUTE_ALL);
  }
        return true;
    case 2:
     if(audioManager.isMicrophoneMute())
   audioManager.setMicrophoneMute(false);
   else
   audioManager.setMicrophoneMute(true);
        return true;
    }
    return false;
}  

但这不起作用,它只会在选项菜单上的按钮上给我文字

编辑:我添加了以下 onPrepareOptionsMenu 方法:

public boolean onPrepareOptionsMenu(Menu menu){
    boolean result = super.onPrepareOptionsMenu(menu);

    if(audioManager.isSpeakerphoneOn())
     menu.findItem(1).setChecked(true);
    else
     menu.findItem(1).setChecked(false);

    if(audioManager.isMicrophoneMute())
     menu.findItem(2).setChecked(true);
    else
     menu.findItem(2).setChecked(false);


    return result;
}

但是,我得到与上图相同的结果,只是文本,没有检查灯

4

2 回答 2

4

如果要动态更改选项菜单的状态,则需要使用onPrepareMenu(). 在这种方法中,您可以进行动态检查并更新您想要的任何内容。祝你好运!!
文件

经过一番挖掘,这看起来像一个自定义视图。我认为您的图片来自此代码

于 2010-08-06T12:47:36.610 回答
1

这是一个老问题,但我遇到了同样的问题并进行了很多搜索以找到上面显示的这样一个 optionsMenu。我在http://www.codeproject.com上找到了一个教程,并对其进行了一些修改。也许它不是专业程序员代码,但它对我有用。在我的谷歌网站上的(安排不佳的)网页上查看我的修改(我在这个网站上也有一个小教程):

https://sites.google.com/site/opiatefuchs/android-code-examples

此代码来自 Code Project 网页上的 wjfrancis(许多道具):

http://www.codeproject.com/Articles/173121/Android-Menus-My-Way

我刚刚对其进行了修改,如果有人有任何改进此代码的想法,我会很高兴。但就目前而言,它有效。

于 2012-11-18T18:09:35.317 回答