Soy nuevo en el uso de PreferenceActivity.PreferenceActivity da una excepción NullPointerException cuando se selecciona de ListPreference
Tarea: Permitir al usuario elegir el diseño del programa de las preferencias
Problema: seleccionando una opción en el PreferenceList provoca una NullPointerException surge
Excepción: En android.preference.ListPreference .onDialogClosed()
(abreviado) Código:
private static final String PREF_LAYOUT_KEY = "PrefLayout";
private static final int DEFAULT_LAYOUT = LayoutHelper.LAYOUT_DOUBLE ;
private static int mListLayout = DEFAULT_LAYOUT ;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
pref.registerOnSharedPreferenceChangeListener(this);
mListLayout = pref.getInt(PREF_LAYOUT_KEY, DEFAULT_LAYOUT);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences pref,
String key) {
Log.v(TAG, "OnSharedPreferencesChanged run"); // TODO Testing Purposes
if(key.equals(PREF_LAYOUT_KEY)){
mListLayout = pref.getInt(key, DEFAULT_LAYOUT);
}
}
[PreferenceActivity]
public class Preferences extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref);
}
}
[res/xml/pref.xml]
<PreferenceCategory
android:title="@string/pref_cat1_title">
<ListPreference
android:title="@string/pref_layout_name"
android:summary="@+id/pref_chosen_layout"
android:key="PrefLayout"
android:entries="@array/prefLayoutOptions"
android:entryValues="@array/prefLayoutOptionsValues"
/>
</PreferenceCategory>
[strings.xml]
<string name="pref_cat1_title">Layout</string>
<string name="pref_layout_name">"Layout of list"</string>
<array name="prefLayoutOptions">
<item>Layout 1 (single)</item>
<item>Layout 2 (double)</item>
<item>Layout 3 (triple)</item>
<item>Layout 4 (quad)</item>
</array>
<array name="prefLayoutOptionsValues">
<item>50</item>
<item>51</item>
<item>52</item>
<item>53</item>
</array>
El trozo de código que registra OnSharedPreferencesChanged se ejecuta nunca pasa de ahí.
¿Alguien puede ver dónde me he equivocado?
EDITAR. Aquí está la parte superior de la traza de la pila:
E/AndroidRuntime(2707): java.lang.NullPointerException
E/AndroidRuntime(2707): at android.preference.ListPreference.onDialogClosed(ListPreference.java:218)
E/AndroidRuntime(2707): at android.preference.DialogPreference.onDismiss(DialogPreference.java:384)
E/AndroidRuntime(2707): at android.app.Dialog$ListenersHandler.handleMessage(Dialog.java:1047)
E/AndroidRuntime(2707): at android.os.Handler.dispatchMessage(Handler.java:99)
Usted dice que la excepción está en .onDialogClosed() pero no puede ver este método en su código ... – Sephy
Se puede publicar una Salida LogCat? –
Acaba de agregar el seguimiento de la pila. @Sephy: el onDialogClosed es de la ListPreference, no es mi propio código – HXCaine