¿Cómo abrir el menú de opciones programáticamente?

Me gustaría abrir las opciones del menú mediante progtwigción sin hacer clic en la tecla de menú del usuario. ¿Como podría hacerlo?

O simplemente llame a Activity.openOptionsMenu () ?

Al parecer, hacerlo en la aplicación onCreate breaks, ya que Activity aún no está adjunta a una ventana. Si lo haces así:

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

…funciona.

Para los desarrolladores que usan la nueva clase de Toolbar de Toolbar de la Support Library , así es como se hace:

 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); toolbar.showOverflowMenu(); 

Ponga esta línea de código en su onResume (), ¡esto debería ayudar!

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

desde un OnClickListener dentro de una actividad llamada MainActivity:

 MainActivity.this.openOptionsMenu(); 

si usa AppCompatActivity

 getSupportActionBar().openOptionsMenu(); 

Dos formas de hacerlo:

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

El argumento de event es un KeyEvent describe la clave utilizada para abrir el menú, que puede modificar cómo se muestra el menú según el tipo de teclado del que proviene.

O … simulando que el usuario ha presionado el botón:

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

Si estás dentro de una vista, puedes escribir

  ((Activity)getContext()).openOptionsMenu(); 

Después de una larga investigación y muchos bashs, la única forma parece ser simular un KeyEvent . Esto hace que aparezca el menú de opciones:

 BaseInputConnection mInputConnection = new BaseInputConnection( findViewById(R.id.main_content), true); KeyEvent kd = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MENU); KeyEvent ku = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MENU); mInputConnection.sendKeyEvent(kd); mInputConnection.sendKeyEvent(ku); 

Para mí, declarar toolbar.showOverflowMenu() en onClick no funciona. openOptionsMenu() tampoco funcionó para mí. En vez de eso, me funciona la siguiente manera,

 new Handler().postDelayed(new Runnable() { @Override public void run() { toolbar.showOverflowMenu(); } }, 500); 
 toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); toolbar.setTitleTextColor(0xFFFFFFFF); new Handler().postDelayed(new Runnable() { @Override public void run() { toolbar.showOverflowMenu(); } }, 100); 
    Intereting Posts