@Override
    public boolean onOptionsItemSelected(final MenuItem item) {
        final int id = item.getItemId();
        if (id == R.id.menu_map) {
            if (waypoint != null) {
                DefaultMap.startActivityCoords(this, waypoint);
            } else if (cache != null) {
                DefaultMap.startActivityGeoCode(this, cache.getGeocode());
            } else {
                DefaultMap.startActivityCoords(this, dstCoords);
            }
        } else if (id == R.id.menu_tts_toggle) {
            SpeechService.toggleService(this, dstCoords);
            ToggleItemType.TOGGLE_SPEECH.toggleMenuItem(item, SpeechService.isRunning());
        } else if (id == R.id.menu_hint) {
            if (binding.hint.offlineHintText.getVisibility() == View.VISIBLE) {
                binding.hint.offlineHintSeparator1.setVisibility(View.GONE);
                binding.hint.offlineHintSeparator2.setVisibility(View.GONE);
                binding.hint.offlineHintText.setVisibility(View.GONE);
            } else {
                binding.hint.offlineHintSeparator1.setVisibility(View.VISIBLE);
                binding.hint.offlineHintSeparator2.setVisibility(View.VISIBLE);
                binding.hint.offlineHintText.setVisibility(View.VISIBLE);
                binding.hint.offlineHintText.setText(cache.getHint());
            }
        } else if (LoggingUI.onMenuItemSelected(item, this, cache, null)) {
            return true; // to satisfy static code analysis
        } else {
            return super.onOptionsItemSelected(item);
        }
        return true;
    }
refresh GUI elements which can be changed e.g. after a new configuration was issued (e.g. turning from portrait into landscape and vice versa
main/src/main/java/cgeo/geocaching/CompassActivity.java