@Override
 public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
   if (key.equals(Prefs.KEY_DIST_UNIT)) {
     distUnitPref.setSummary(
         Utils.getDistUnit(
             this, Integer.parseInt(sharedPreferences.getString(Prefs.KEY_DIST_UNIT, "0"))));
   } else if (key.equals(Prefs.KEY_DEFAULT_LOCATION)) {
     locationPref.setSummary(sharedPreferences.getString(key, ""));
   } else if (key.equals(Prefs.KEY_STATUS_FILTER)) {
     filterPref.setSummary(
         BreweryStatusFilterPreference.toString(
             this, sharedPreferences.getInt(key, BreweryStatusFilterPreference.DEFAULT_VALUE)));
   } else if (key.equals(Prefs.KEY_NEARBY_DISPLAY_MAP)) {
     String[] values = SettingsActivity.this.getResources().getStringArray(R.array.nearby_display);
     int index = Integer.parseInt(sharedPreferences.getString(key, Prefs.KEY_NEARBY_DISPLAY_LIST));
     nearbyDisplayPref.setSummary(values[index]);
   }
 }
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    addPreferencesFromResource(R.xml.settings);
    mPrefs = Prefs.getSettings(this);
    mEditor = Prefs.getSettingsEditor(this);
    mSaver = Prefs.getSettingsSaver(this);

    distUnitPref = findPreference(Prefs.KEY_DIST_UNIT);
    distUnitPref.setSummary(
        Utils.getDistUnit(this, Integer.parseInt(mPrefs.getString(Prefs.KEY_DIST_UNIT, "0"))));
    distUnitPref.setOnPreferenceChangeListener(
        new OnPreferenceChangeListener() {
          @Override
          public boolean onPreferenceChange(Preference preference, Object newValue) {
            distUnitPref.setSummary(
                Utils.getDistUnit(SettingsActivity.this, Integer.parseInt((String) newValue)));
            return true;
          }
        });

    locationPref = findPreference(Prefs.KEY_DEFAULT_LOCATION);
    locationPref.setSummary(
        mPrefs.getString(Prefs.KEY_DEFAULT_LOCATION, getString(R.string.defaultLocationSummary)));
    locationPref.setOnPreferenceChangeListener(
        new OnPreferenceChangeListener() {
          @Override
          public boolean onPreferenceChange(Preference preference, Object newValue) {
            String newLoc = newValue.toString();

            return setupLocationList(newLoc);
          }
        });

    filterPref = findPreference(Prefs.KEY_STATUS_FILTER);
    int filter =
        mPrefs.getInt(Prefs.KEY_STATUS_FILTER, BreweryStatusFilterPreference.DEFAULT_VALUE);
    filterPref.setSummary(BreweryStatusFilterPreference.toString(getApplicationContext(), filter));
    filterPref.setOnPreferenceChangeListener(
        new OnPreferenceChangeListener() {
          @Override
          public boolean onPreferenceChange(Preference preference, Object newValue) {
            return true;
          }
        });

    nearbyDisplayPref = findPreference(Prefs.KEY_NEARBY_DISPLAY);
    if (Utils.checkPlayServices(this) && (Utils.checkOpenGLVersion(this) >= 2)) {
      nearbyDisplayPref.setOnPreferenceChangeListener(
          new OnPreferenceChangeListener() {
            @Override
            public boolean onPreferenceChange(Preference preference, Object newValue) {
              String[] values =
                  SettingsActivity.this.getResources().getStringArray(R.array.nearby_display);
              int index = Integer.parseInt((String) newValue);
              nearbyDisplayPref.setSummary(values[index]);
              return true;
            }
          });
    } else {
      // Device doesn't support maps.
      mEditor.putString(Prefs.KEY_NEARBY_DISPLAY, Prefs.KEY_NEARBY_DISPLAY_LIST);
      mSaver.savePreferences(mEditor, false);

      nearbyDisplayPref.setEnabled(false);
    }

    String[] values = SettingsActivity.this.getResources().getStringArray(R.array.nearby_display);
    int index = Integer.parseInt(mPrefs.getString(Prefs.KEY_NEARBY_DISPLAY, "error"));
    nearbyDisplayPref.setSummary(values[index]);
  }