Android - 选项菜单上的可检查按钮

标签 android button options-menu

任何人都可以指出任何教程的方向,这些教程展示了如何创建带有可点击检查的选项菜单,如下图所示:


alt text 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;
}

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

最佳答案

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

经过一些挖掘,这看起来像一个自定义 View 。我想你的照片来了from this code .

关于Android - 选项菜单上的可检查按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3423404/

相关文章:

java - 如何获取有关第一个 Activity 的按钮单击的信息并在第三个 Activity 中使用它? - 安卓

java - Android - 刷新选项菜单而不调用 invalidateOptionsMenu()

java - 适用于 Java 的 Google-API 日历提要

javascript - 在 HTML 中单击按钮时显示具有不同 id 的段落

html - 当使用 `margin: 0 auto` 并且没有 `text-align: center` 的父级时, <a/> 需要什么样式才能像 <button/> 一样?

ios - swift ios 有原生选项菜单吗?

android - 如何在 Android 的 TabActivity 中创建一个选项菜单

android - 如何以编程方式抑制 Android 应用程序中的特定语言环境

java - 无法获取适用于 Android 的 GET 请求

java - 警告 : The option setting is experimental and unsupported