Intereting Posts
Как изменить идентификатор группы файла на корневом устройстве Android? Как тестировать устройство Android и издеваться над статическим методом Как я могу просто загрузить изображение с универсальным загрузчиком изображений Общий приемник для кнопок в макете андроида? Android: целевой или прикладной эквивалент onPause Android: QCMediaPlayer не может быть расположен Искать все вхождения строки во всем проекте в Android Studio Как установить конфигурацию USB по умолчанию для Android M на MTP, а не на «только зарядку»? ListFragment onItemClickListener не работает Запретить «Enter key» для запуска TextWatcher Android – битмап и управление памятью? Не удалось изменить курсор Up рядом с пиктограммой приложения в ActionBar в моем навигационном ящике Android: добавление мелодии звонка для контакта не работает с контактом, который я только что добавил, но работает над контактом, который я добавил в предыдущую синхронизацию Поддерживает ли Android сжатие необработанных ресурсов XML? Программно настроить PPTP / L2TP VPN на Android

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

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

    Или просто вызовите Activity.openOptionsMenu () ?

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

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

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

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

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

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

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

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

     MainActivity.this.openOptionsMenu(); 

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

     getSupportActionBar().openOptionsMenu(); 

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

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

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

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

    После долгого исследования и многих попыток, единственный способ, похоже, 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); 

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

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