Método RingtonePreference getEntry

Quiero mostrar el valor seleccionado actual en mi pantalla de preferencias en la etiqueta de resumen.

Para ListPreference , usé el método getEntry en

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { 

método, mi clase es:

 public class AlarmPropertiesActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener 

Para EditTextPreference , utilicé el método getText

Trato de obtener el valor por defecto para RingtonePreference , pero no he encontrado ningún método get para eso.

¿Alguien me ayuda?

BR Kolesar

Este funciona para mí 😉

 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)); } 

Tengo el mismo problema. Intentó revisar el valor SharedPreferences, pero desafortunadamente el uri conduce a un id como un archivo con nombre.

 private void updateSummary(Preference p, SharedPreferences sharedPrefs) { if (p instanceof ListPreference) { ListPreference listPref = (ListPreference) p; p.setSummary(listPref.getEntry()); } else if (p instanceof RingtonePreference) { /* * This is kind of a longshot, since we are not able to get the entry directly and * so we have to go the route via the shared preferences. */ RingtonePreference ringPref = (RingtonePreference) p; String ringtoneKey = ringPref.getKey(); String ringtonePath = sharedPrefs.getString(ringtoneKey, ""); ringPref.setSummary(ringtonePath); } } 

La ruta es algo como esto: content: // media / internal / audio / media / 25

Así que esta no es una solución adecuada. Pero me di cuenta de que, por ejemplo, la aplicación GoogleTalk no muestra el sonido de notificación seleccionado también. GoogleMail por otro lado lo muestra.

  • Usar TimePicker o DatePicker en la pantalla Preferencias en Android
  • ¿Por qué Custom DialogPreference no se activa en onSharedPreferenceChanged?
  • ¿Es la lectura / escritura preferencias una operación costosa?
  • SpinnerPreference? (Cómo incrustar un Spinner en una pantalla de Preferencias)
  • Establecer indicadores de intención para PreferenceScreen en xml
  • Cómo establecer el resumen de preferencias edittext y hacer que se pegue
  • ¿Cuál es el nombre de archivo utilizado por defecto las preferencias compartidas?
  • Uso de preferencias no predeterminadas en PreferenceActivity
  • ¿Cómo se declara el tipo de preferencia de Android?
  • Agregar botones a PreferenceFragment
  • Crear preferencia de diseño mediante programación
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.