2010-08-06 11 views
1

peut pointer quiconque dans la direction de tutoriels qui montrent comment créer un menu d'options avec des contrôles clicakble comme dans l'image ci-dessous:Android - Boutons cochables sur le menu Options


alt text http://img291.imageshack.us/img291/1221/deviceit.png


J'ai essayé comme suit:

/** 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; 
} 

Mais cela ne fonctionne pas ne me donne que le texte sur les boutons du menu Options

EDIT: J'ai ajouté la méthode onPrepareOptionsMenu suivante:

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

Cependant je reçois le même résultat juste le texte et pas de lumière de contrôle comme dans l'image ci-dessus

+0

La vieille question, mais juste une note à quiconque cherche - en utilisant menu.findItem() utilise l'ID de l'élément plutôt qu'un numéro d'index. ie menu.findItem (R.id.menu_item) – enyciaa

Répondre

4

Si vous voulez changer dynamiquement l'état de votre menu d'option, vous devez utiliserdix . Dans cette méthode, vous pouvez effectuer des vérifications dynamiques et mettre à jour tout ce que vous voulez. Bonne chance !!
documentation

Après quelques excavations, cela ressemble à une vue personnalisée. Je pense que votre photo vient from this code.

+0

J'ai ajouté cette méthode, j'ai édité ma question pour vous montrer mon code, mais le résultat est le même, je ne peux pas l'obtenir pour produire le voyant qui s'allume et s'éteint (Le vert) –

+0

En fait, l'image que vous affichez ressemble à une vue personnalisée ... Est-ce quelque chose que vous avez trouvé sur le web? Parce que peut-être ce n'est pas possible directement à partir de l'API de base et vous devrez créer votre propre menu. Je ne me souviens pas avoir jamais vu un menu dans Android avec l'icône ci-dessous le texte. – Sephy

+0

Son standard à partir d'Android 1.6, Vanilla comme dans son pur Android 1.6, pas une ROM personnalisée –

1

Ceci est une vieille question, mais j'ai eu le même problème et beaucoup cherché pour trouver une telle optionMenu montré ci-dessus. J'ai trouvé un tutoriel sur http://www.codeproject.com et l'ai modifié un peu. Peut-être que ce n'est pas un code profi-programmeurs, mais ça marche pour moi. Voir mes modifications à ma (mauvaise arrangé) page Web sur les sites Google (je suis un petit tutoriel trop sur ce site):

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

Ce code est original de wjfrancis sur la page Web Code du projet (de nombreux accessoires):

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

Je viens modifia et je serais heureux si quelqu'un a des idées pour améliorer ce code. Mais pour l'instant, ça marche.

Questions connexes