Подтвердить что ты не робот

Как программно открыть меню опций?

Я хотел бы открыть опцииMenu программно, не нажимая на кнопку меню от пользователя. Как мне это сделать?

4b9b3361

Ответ 2

По-видимому, это делается в onCreate breaks app, так как Activity еще не привязана к окну. Если вы сделаете это так:

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

... он работает.

Ответ 3

Для разработчиков, использующих новый класс Toolbar для Support Library, вот как это делается:

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

Ответ 4

Поместите эту строку кода в свой onResume(), это должно помочь!

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

Ответ 5

из OnClickListener внутри действия, называемого MainActivity:

MainActivity.this.openOptionsMenu();

Ответ 6

при использовании AppCompatActivity

getSupportActionBar().openOptionsMenu();

Ответ 7

Два способа сделать это:

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

Аргумент event - это KeyEvent, описывающий ключ, используемый для открытия меню, который может изменять способ отображения меню в зависимости от типа клавиатуры.

Или... путем моделирования того, что пользователь нажал кнопку:

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

Ответ 8

После долгих исследований и многих попыток, единственный способ, похоже, имитирует KeyEvent. Появится меню параметров:

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

Ответ 9

Если вы находитесь внутри своего вида, вы можете написать

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

Ответ 10

Для меня объявление toolbar.showOverflowMenu() в onClick не работает. openOptionsMenu() тоже не работал у меня. Вместо этого для меня работает следующий способ:

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

Ответ 11

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

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