PreferenceFragment crashing, objeto nulo Referencia

Tengo un ActionBarActivity simple que contiene un PreferenceFragment como sigue:

import android.app.Activity; import android.os.Bundle; import android.preference.PreferenceFragment; public class SettingsActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_settings); // Display the fragment as the main content. getFragmentManager().beginTransaction() .replace(R.id.fra_settings_container, new SettingsFragment()).commit(); } public static class SettingsFragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Load the preferences from an XML resource addPreferencesFromResource(R.xml.preferences); } } } 

Aquí tienes mis preferencias.xml:

 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <ListPreference android:defaultValue="15" android:dialogTitle="@string/settings_heading_alarm_interval" android:entries="@array/alarm_interval_entries" android:entryValues="@array/alarm_interval_values" android:key="alarm_interval" android:title="@string/settings_heading_alarm_interval" /> <ListPreference android:defaultValue="1" android:dialogTitle="@string/settings_heading_alarm_type" android:entries="@array/alarm_type_entries" android:entryValues="@array/alarm_type_values" android:key="alarm_type" android:title="@string/settings_heading_alarm_type" /> <CheckBoxPreference android:key="alarm_vibrate_only" android:title="@string/settings_heading_silent" /> <RingtonePreference android:dependency="alarm_vibrate_only" android:key="alarm_tone" android:title="@string/settings_heading_alarm_tone" android:showDefault="true" android:showSilent="true"/> </PreferenceScreen> 

Cuando navego a SettingsActivity recibo el siguiente registro de errores:

 java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.Object.equals(java.lang.Object)' on a null object reference at android.preference.ListPreference.findIndexOfValue(ListPreference.java:231) at android.preference.ListPreference.getValueIndex(ListPreference.java:240) at android.preference.ListPreference.getEntry(ListPreference.java:218) at android.preference.ListPreference.getSummary(ListPreference.java:164) at android.preference.Preference.onBindView(Preference.java:550) at android.preference.Preference.getView(Preference.java:489) at android.preference.PreferenceGroupAdapter.getView(PreferenceGroupAdapter.java:246) at android.widget.AbsListView.obtainView(AbsListView.java:2344) at android.widget.ListView.makeAndAddView(ListView.java:1864) at android.widget.ListView.fillDown(ListView.java:698) at android.widget.ListView.fillFromTop(ListView.java:759) at android.widget.ListView.layoutChildren(ListView.java:1659) at android.widget.AbsListView.onLayout(AbsListView.java:2148) at android.view.View.layout(View.java:15596) at android.view.ViewGroup.layout(ViewGroup.java:4966) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557) at android.widget.LinearLayout.onLayout(LinearLayout.java:1466) at android.view.View.layout(View.java:15596) at android.view.ViewGroup.layout(ViewGroup.java:4966) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573) at android.widget.FrameLayout.onLayout(FrameLayout.java:508) at android.view.View.layout(View.java:15596) at android.view.ViewGroup.layout(ViewGroup.java:4966) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573) at android.widget.FrameLayout.onLayout(FrameLayout.java:508) at android.view.View.layout(View.java:15596) at android.view.ViewGroup.layout(ViewGroup.java:4966) at com.android.internal.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:494) at android.view.View.layout(View.java:15596) at android.view.ViewGroup.layout(ViewGroup.java:4966) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573) at android.widget.FrameLayout.onLayout(FrameLayout.java:508) at android.view.View.layout(View.java:15596) at android.view.ViewGroup.layout(ViewGroup.java:4966) at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2072) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1829) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5779) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767) at android.view.Choreographer.doCallbacks(Choreographer.java:580) at android.view.Choreographer.doFrame(Choreographer.java:550) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5221) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 

Desde mi entendimiento, estoy implementando un PreferenceFragment exactamente según la guía de Android, y no puedo encontrar nada en el registro de errores que me dice dónde buscar un problema (lo más probable es porque todavía soy un principiante). Puesto que he visto casi cada pregunta remotamente relacionada con lo que estoy tratando, puede ser digno de nota que estoy funcionando Lollipop, y estoy usando Theme.Appcompat.Light. El resto de mi aplicación funciona bien, así que no entiendo cómo el tema podría ser el problema.

Gracias, y hágamelo saber si puedo proporcionar más información.

Editar:

Estos son los valores tomados de mi archivo string_arrays.xml:

 <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="alarm_type_entries"> <item name="alarm_continuous">Continuous</item> <item name="alarm_single">Sound Once</item> <item name="alarm_minute">Sound Each Minute</item> </string-array> <string-array name="alarm_type_values"> <item name="continuous">1</item> <item name="single">2</item> <item name="minute">3</item> </string-array> <string-array name="alarm_interval_entries"> <item name="interval_fifteen">15 Minutes</item> <item name="interval_thirty">30 Minutes</item> <item name="interval_forty_five">45 Minutes</item> <item name="interval_one_hour">1 Hour</item> <item name="interval_two_hours">2 Hours</item> <item name="interval_three_hours">3 Hours</item> </string-array> <integer-array name="alarm_interval_values"> <item name="fifteen">15</item> <item name="thirty">30</item> <item name="forty_five">45</item> <item name="one_hour">60</item> <item name="two_hours">120</item> <item name="three_hours">180</item> </integer-array> </resources> 

El crédito debería ir a njzk2 para señalar que era un problema con ListPreference encontrar un valor nulo. Resulta que una de las matrices se almacenó como una "matriz de números enteros" en lugar de una "matriz de cadenas". Cambiar eso arregló el problema.

Cambiar todos los elementos de

 <integer-array ... 

a

 <string-array ... 

Trabaja para mi.

  • Cambiar categoría de PreferenciaCategoría: título
  • Intento de selección de archivos abierto desde preferencias
  • Cómo insertar DrawerLayout en PreferenceActivity en una aplicación de Android?
  • Preferencias de diferentes alturas dentro de una PreferenciaActividad
  • Android: ¿Hay una manera de mostrar DialogPreference desde el código?
  • OnBindDialogView no llamado - ¿Por qué?
  • ¿Cómo puedo configurar el color de texto de resumen de preferencias de Android?
  • Android SeekBarPreference
  • ¿Cómo actualiza PreferenceActivity para mostrar los cambios en la configuración?
  • Android preferencia reactivación de relleno en orientación horizontal
  • ¿Cómo volver de Preferencias subscreen a la pantalla principal en PreferenceFragmentCompat?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.