2015-03-27 3 views
2

Мне нужно открыть меню переполнения программным путем нажатием кнопки «домой».Программное меню открытия (переполнения)

Как и в других разделах, приведенных выше Я пробовал Activity.openOptionsMenu() и ActionBarActivity().getSupportActionBar().openOptionsMenu(), но оба раза ничего не происходит.

Б Код:

@Override 
public boolean onOptionsItemSelected(final MenuItem item) { 
    ... 
    case android.R.id.home: 
     Log.i("HOME", "clicked"); 

     this.openOptionsMenu(); 
     break; 
    ... 
} 
+0

http://stackoverflow.com/questions/9996333/ openoptionsmenu-function-not-working-in-ics/17903128 # 17903128 – Techfist

+1

Пробовал мой Nexus 5 (5.0.1) и эмулятор (2.3.3), но ничего не происходит. –

+0

Посмотрите на этот вопрос: http://stackoverflow.com/questions/9996333/openoptionsmenu-function-not-working-in-ics/17903128#17903128 – atulkhatri

ответ

5

Если вы используете новый Toolbar класс Support Library, сделайте следующее:

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

это возвращает false, когда Я называю это – Manny265

+0

Проверьте источник: https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/java/android/widget/Toolbar.java#514, вы уверены, что Правильно ли вы устанавливаете меню на панель инструментов? и что вы видите кнопку переполнения на панели инструментов (3 точки)? – marmor

+0

он работает, когда отложен в обработчике – Manny265

0

я добиваюсь, чтобы сделать ниже вещь, мы надеемся, поможет вам также: -

// R.id.over_flow_item this your id in which your task has been perform 
toolbar.getMenu().perperformIdentifierAction(R.id.over_flow_item,0); 

perperformIdentifierAction

public abstract boolean performIdentifierAction (int id, int flags) 
Added in API level 1 
Execute the menu item action associated with the given menu identifier. 
Parameters 
id 
Identifier associated with the menu item. 
flags 
Additional option flags or 0. 
Returns 
If the given identifier exists and is shown, returns true; else returns false. 
See Also 
FLAG_PERFORM_NO_CLOSE 
0

Если вы не имеете ActionBar, единственный способ, которым я нашел, чтобы имитировать 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); 
0

Если вы используете настроить панель инструментов в вас приложение, вы можете использовать следующий способ,

new Handler().postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        toolbar.showOverflowMenu(); 
       } 
      }, 500); 
Смежные вопросы