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
- Preferencias de Android: Valores predeterminados incorrectos DESPITE "setDefaultValues"
- Las preferencias compartidas no persisten después de reiniciar la aplicación
- ¿Cómo puedo mostrar un Diálogo de un PreferenceFragment?
- Android: Cómo almacenar una matriz de cadenas en SharedPreferences para android
- Preferencias anidadas.xml
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
- ¿Cómo hacer que SharedPreferences de una PreferenceActivity esté configurada como predeterminada en Android?
- Configuración de eclipse para quejarse de cadenas codificadas duras para las preferencias de Android xml
- SharedPreferences Editor commit lleva mucho tiempo
- PreferenceActivity no se muestra (pantalla en blanco)
- Las preferencias compartidas se reinician cuando la aplicación se cierra con fuerza o se bloquea
- Pantalla de Preferencias de Android sin XML
- Preferencias de Android: ¿Cómo cargar los valores predeterminados cuando el usuario no ha utilizado la pantalla de preferencias?
- Cómo establecer varios valores predeterminados en un MultiSelectListPreference?
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.
- Intellij (Android Studio) git integración: ¿Dónde está .git?
- Botón de Android en el elemento ListView para cambiar el texto en la misma fila