56 votes

Comment ouvrir le menu des options de manière programmatique ?

J'aimerais ouvrir le menu des options de manière programmatique sans que l'utilisateur ait à cliquer sur la touche de menu. Comment faire ?

92voto

Robby Pond Points 37875

Ou appelez simplement Activity.openOptionsMenu() ?

32voto

Kovač Points 271

Apparemment, le faire dans onCreate interrompt l'application, puisque Activity n'est pas encore attaché à une fenêtre. Si vous le faites comme ça :

@Override
public void onAttachedToWindow() {
    openOptionsMenu(); 
};

...ça marche.

11voto

Royston Pinto Points 4421

Mettez cette ligne de code dans votre onResume(), cela devrait aider !

new Handler().postDelayed(new Runnable() { 
   public void run() { 
     openOptionsMenu(); 
   } 
}, 1000);

8voto

Oded Breiner Points 1852

À partir d'un OnClickListener dans une activité appelée MainActivity :

MainActivity.this.openOptionsMenu();

1voto

Cristian Points 92147

Il y a deux façons de le faire :

Activity.getWindow().openPanel(Window.FEATURE_OPTIONS_PANEL, event);

El event L'argument est un KeyEvent décrivant la touche utilisée pour ouvrir le menu, ce qui peut modifier l'affichage du menu en fonction du type de clavier d'où il provient.

Ou... en simulant que l'utilisateur a appuyé sur le bouton :

IWindowManager wManager = IWindowManager.Stub.asInterface(ServiceManager.getService("window"));
KeyEvent kd = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_SOFT_LEFT);
KeyEvent ku = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_SOFT_LEFT);
wManager.injectKeyEvent(kd.isDown(), kd.getKeyCode(), kd.getRepeatCount(), kd.getDownTime(), kd.getEventTime(), true);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X