Excepción de tiempo de ejecución al utilizar la configuración de Android (estoy siguiendo el curso de desarrollo de Android de udacity)

Soy nuevo en android y siguiendo el curso de desarrollador Android de Udacity para aprender. Estoy en el capítulo 3 donde enseñan sobre la adición de los ajustes en su aplicación. He añadido el SettingActivity desde el estudio android. Cuando hago clic en el menú de configuración, mi aplicación se bloquea. Este es mi archivo pref_general.xml

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <!-- NOTE: EditTextPreference accepts EditText attributes. --> <!-- NOTE: EditTextPreference's summary should be set to its value by the activity code. --> <EditTextPreference android:key="@string/pref_location_key" android:defaultValue="@string/pref_location_default" android:maxLines="1" android:inputType="text" android:selectAllOnFocus="true" android:singleLine="true" android:title="@string/pref_location_label" /> 

He realizado estos cambios en SettingActivity

 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setupActionBar(); addPreferencesFromResource(R.xml.pref_general); bindPreferenceSummaryToValue(findPreference(getString(R.string.pref_location_key)));} 

Estoy recibiendo la siguiente excepción cuando hago clic en el menú Configuración

 Process: com.example.android.sunshine.app, PID: 10131 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.sunshine.app/com.example.android.sunshine.app.SettingsActivity}: java.lang.RuntimeException: Modern two-pane PreferenceActivity requires use of a PreferenceFragment at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2339) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2413) at android.app.ActivityThread.access$800(ActivityThread.java:155) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1317) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5343) 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:905) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700) Caused by: java.lang.RuntimeException: Modern two-pane PreferenceActivity requires use of a PreferenceFragment at android.preference.PreferenceActivity.requirePreferenceManager(PreferenceActivity.java:1441) at android.preference.PreferenceActivity.addPreferencesFromResource(PreferenceActivity.java:1511) at com.example.android.sunshine.app.SettingsActivity.onCreate(SettingsActivity.java:124) at android.app.Activity.performCreate(Activity.java:6010) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1129) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2292) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2413) at android.app.ActivityThread.access$800(ActivityThread.java:155) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1317) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5343) 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:905) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700) 

¿Alguna ayuda? Lo siento si es algo muy ingenuo

Pude resolver esto.
Yo estaba cambiando el OnCreate de mi SettingActivity en vez de cambiar mi OnCreate de SettingFragment que es la clase privada estática de SettingActivity.

@mayank agrawal

Quiso decir que los cambios deben hacerse en clase que extiende PreferenceFragment. Es decir, tendrás que extender PreferenceFragment.

Aunque el código es bastante explicativo en el sitio de desarrolladores , aquí he tomado parte de sólo mencionar lo que quería decir (poniendo comentarios en el código).

 public class PreferenceWithHeaders extends PreferenceActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ... } //static class extending PreferenceFragment public static class Prefs1Fragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); PreferenceManager.setDefaultValues(getActivity(), R.xml.advanced_preferences, false); // Here's where you've to load the preferences from an XML resource addPreferencesFromResource(R.xml.fragmented_preferences); } } private void private void bindPreferenceSummaryToValue(Preference preference) { ... } } 

Si su aplicación admite API 10 o baja, es obligatorio utilizar la actividad de preferencias. Sin embargo, también puede utilizar esa forma obsoleta en la nueva API también. Aquí está una explicación agradable en los detalles para los principiantes.

(Yo también estoy aprendiendo Así que si alguien experto encuentra algún error, entonces avísame.)

  • Cómo utilizar parámetros con HttpPost
  • Android notification show Imagen de cadena sin unicode
  • Recuperar mediante programación permisos de manifest.xml en android
  • ¿Cómo depurar el código fuente de java cuando implemento un detector personalizado para Lint?
  • Anular la funcionalidad del botón de retroceso del hardware de Android
  • Guardando una imagen grande en PNG
  • Adición de la vista de desplazamiento al diseño lineal dinámicamente
  • Importar KML en Google Maps API V2
  • ¿Cómo puedo buscar los datos de mes específico de la base de datos SQLite
  • Onclicklistener para el botón en una lista
  • ¿Por qué mi aplicación Android salta los marcos cuando se llama a Thread.sleep?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.