// we want a self defined behavior for the back button @Override public void onBackPressed() { // exit fullscreen mode if it is enabled and action bar is disabled or the back stack is empty if (mIitcWebView.isInFullscreen() && mBackStack.isEmpty()) { mIitcWebView.toggleFullscreen(); return; } // close drawer if opened if (mNavigationHelper.isDrawerOpened()) { mNavigationHelper.closeDrawers(); return; } // kill all open iitc dialogs if (!mDialogStack.isEmpty()) { final String id = mDialogStack.pop(); mIitcWebView.loadUrl( "javascript: " + "var selector = $(window.DIALOGS['" + id + "']); " + "selector.dialog('close'); " + "selector.remove();"); return; } // Pop last item from backstack and pretend the relevant menu item was clicked if (!mBackStack.isEmpty()) { backStackPop(); mBackButtonPressed = true; return; } if (mBackButtonPressed || !mSharedPrefs.getBoolean("pref_press_twice_to_exit", false)) { super.onBackPressed(); } else { mBackButtonPressed = true; Toast.makeText(this, "Press twice to exit", Toast.LENGTH_SHORT).show(); // reset back button after 2 seconds new Handler() .postDelayed( new Runnable() { @Override public void run() { mBackButtonPressed = false; } }, 2000); } }
@Override public boolean onPrepareOptionsMenu(final Menu menu) { boolean visible = false; if (mNavigationHelper != null) visible = !mNavigationHelper.isDrawerOpened(); if (mIsLoading) visible = false; for (int i = 0; i < menu.size(); i++) { final MenuItem item = menu.getItem(i); final boolean enabled = mAdvancedMenu.contains(item.getTitle()); switch (item.getItemId()) { case R.id.action_settings: item.setVisible(true); break; case R.id.locate: item.setVisible(enabled && visible); item.setEnabled(!mIsLoading); item.setIcon( mUserLocation.isFollowing() ? R.drawable.ic_action_location_follow : R.drawable.ic_action_location_found); break; case R.id.menu_debug: item.setVisible(enabled); item.setChecked(mDebugging); break; default: item.setVisible(enabled && visible); } } return super.onPrepareOptionsMenu(menu); }