FindPreference devuelve NULL en el prefit nombre pref
Es muy frustrante. ¿Por qué estoy obteniendo null en la recuperación de preferencias en mi clase PreferenceActivity en el código siguiente?
private void setupSpecialPrefClickListener(SettingsSystem settingsSystem) { Map<String,?> keys = PreferenceManager.getDefaultSharedPreferences(this).getAll(); for(Map.Entry<String,?> entry : keys.entrySet()){ String key = entry.getKey(); if( key.startsWith("d_")) { Preference p = findPreference((CharSequence)key); //p == NULL!!!!! p.setOnPreferenceClickListener(this); } } }
El pref nombre encontrado y pasado es perfectamente legítimo nombre de pref existente ("d_lightSensorLimit" – el exacto apareció primero en el Mapa y causando la excepción). Y fue extraer perfectamente bien por la cadena de texto sin formato en el constructor antes. Este método es llamado desde el constructor también (reemplazó la enorme lista de entradas allí con llamada de este método):
- Guardar matrices de cadenas con SharedPreference
- Problema al guardar las preferencias compartidas en Android
- Escribir la clave pública / privada en SharedPreferences y usarla
- ¿Contexto de la aplicación para SharedPreferences?
- ¿Cómo puedo compartir un archivo SharedPreferences a través de dos aplicaciones de Android diferentes?
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.settings_system); getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); setupSpecialPrefClickListener(this); }
Por la solicitud de la gente aquí es el extracto relevante del settings_system.xml:
<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > <Preference android:defaultValue="0" android:dialogTitle="Night mode on lux (0-disable)" android:inputType="phone" android:key="d_lightSensorLimit" android:layout="@layout/pref" android:title="Automatic nightmode" /> </PreferenceScreen>
Estoy apuntando 2.1 por lo que es el método obsoleto en uso. Y funcionaba perfectamente bien antes.
- Android SharedPreferences, cómo guardar una variable int simple
- Inicie la aplicación de Android con actividad específica
- Cómo guardar la ruta de la imagen utilizando las preferencias compartidas
- Comportamiento SharedPreferences en Actualizar / Desinstalar
- ¿Es buena idea usar las preferencias compartidas de Android para almacenar grandes cantidades de datos?
- Puedo almacenar dos o más valores con la misma clave usando SharedPreferences en android?
- Ajuste el botón Visible en otro acticty con la configuración de Preferencias
- Android M extraño problema de preferencias compartidas