studio - manual de programacion android




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

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.

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


Después de una larga investigación y muchos intentos, 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 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); 

Si estás dentro de una vista, puedes escribir

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

si usa AppCompatActivity

getSupportActionBar().openOptionsMenu();

toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    toolbar.setTitleTextColor(0xFFFFFFFF);

    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            toolbar.showOverflowMenu();
        }
    }, 100);




android-activity