Im using the action bar compatibility library. I try to open the options menu using a button with the openOptionsMenu () function, but it does nothing.
The menu is displayed as usual when you press the menu key on my phone. What is wrong here?
public class ReadActivity extends ActionBarActivity { ... @Override public boolean onCreateOptionsMenu(Menu menu) { boolean value; MenuInflater menuInflater = getMenuInflater(); menuInflater.inflate(R.menu.read, menu); value = super.onCreateOptionsMenu(menu); if (Helper.SupportsNewApi()) { getActionBar().hide(); } else { ((View) ((LinearLayout) findViewById(R.id.actionbar_compat)) .getParent()).setVisibility(View.GONE); } return value; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); break; case R.id.menu_search: // Toast.makeText(this, "Tapped search", Toast.LENGTH_SHORT).show(); break; case R.id.menu_bookmark: // selectText(); // setFullScreen(false); break; case R.id.menu_day_night_mode: break; case R.id.menu_settings: break; case R.id.menu_zoom_in: showOverlay(false); break; case R.id.menu_zoom_out: showOverlay(false); break; case R.id.menu_table_of_contents: Intent tocIntent = new Intent(this, TocActivity.class); int GET_SECTION_REFERENCE = 1; startActivityForResult(tocIntent, GET_SECTION_REFERENCE); break; case R.id.menu_overflow: Toast.makeText(this, "Tapped overflow", Toast.LENGTH_SHORT).show(); //closeOptionsMenu(); openOptionsMenu(); //tried the below aswell, no results //getWindow().openPanel(Window.FEATURE_OPTIONS_PANEL, null); break; } return super.onOptionsItemSelected(item); } @Override //disable volume buttons public boolean onKeyDown(int keyCode, KeyEvent event) { if (!menuShown && (keyCode == 25 || keyCode == 24)) { return true; } return super.onKeyDown(keyCode, event); } @Override public boolean onKeyUp(int keyCode, KeyEvent event) { Log.d(tag, "Keycode is = "+keyCode); if (keyCode == 82) { if (!menuShown) { //openOptionsMenu(); showOverlay(true); } else { showOverlay(false); } //don't want it to open when pressing menu return true; } else if (keyCode == 4 && menuShown) { showOverlay(false); return true; } else if (keyCode == 25 && !menuShown) { prevPage(); return true; } else if (keyCode == 24 && !menuShown) { nextPage(); return true; } return super.onKeyUp(keyCode, event); } }
android android-actionbar android-menu
Richard Apr 03 2018-12-12T00: 00Z
source share