 <p>This one works for me ;-)</p> <pre><code>if (pref instanceof RingtonePreference) { Log.i("***", "RingtonePreference " + pref.getKey()); final RingtonePreference ringPref = (RingtonePreference) pref; ringPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { Log.i("***", "Changed " + newValue.toString()); Ringtone ringtone = RingtoneManager.getRingtone( SettingsActivity.this, Uri.parse((String) newValue)); ringPref.setSummary(ringtone.getTitle(SettingsActivity.this)); return true; } }); String ringtonePath=pref.getSharedPreferences().getString(pref.getKey(), "defValue"); Ringtone ringtone = RingtoneManager.getRingtone( SettingsActivity.this, Uri.parse((String) ringtonePath)); ringPref.setSummary(ringtone.getTitle(SettingsActivity.this)); } </code></pre>