¿Por qué no puedo agregar el primer encabezado a getPreferenceScreen?

La actividad de configuración estándar de google android studio ahora muestra el primer encabezado "General". Así que modifiqué el código, pero obtengo java.lang.NullPointerException en la primera aparición de getPreferenceScreen (). AddPreference (fakeHeader);

private void setupSimplePreferencesScreen() { if (!isSimplePreferences(this)) { return; } PreferenceCategory fakeHeader = new PreferenceCategory(this); fakeHeader.setTitle(R.string.pref_header_notifications); getPreferenceScreen().addPreference(fakeHeader); addPreferencesFromResource(R.xml.pref_general); fakeHeader = new PreferenceCategory(this); fakeHeader.setTitle(R.string.pref_header_notifications); getPreferenceScreen().addPreference(fakeHeader); addPreferencesFromResource(R.xml.pref_notification); bindPreferenceSummaryToValue(findPreference("username")); bindPreferenceSummaryToValue(findPreference("password")); bindPreferenceSummaryToValue(findPreference("server")); } @Override @TargetApi(Build.VERSION_CODES.HONEYCOMB) public void onBuildHeaders(List<Header> target) { if (!isSimplePreferences(this)) { loadHeadersFromResource(R.xml.pref_headers, target); } } 

 <header android:fragment="com.example.eslam.rottapharm.SettingsActivity$GeneralPreferenceFragment" android:title="@string/pref_header_general" /> </preference-headers> 

OK, me di cuenta porque era molesto para mí también. Así que para mostrar el título de encabezado para la primera sección de preferencias (por ejemplo, general), he añadido otro archivo xml (PreferenceScreen) que se utiliza como un contenedor. Lo llamé pref_container.xml y se encuentra en el directorio xml junto con otros encabezados de preferencia como pref_general.xml, pref_notification.xml, etc. El código en él:

 <?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> </PreferenceScreen> 

Luego, en SettingsActivity.java tengo:

 // Add container addPreferencesFromResource(R.xml.pref_container); // Add 'general' preferences, and a corresponding header. PreferenceCategory fakeHeader = new PreferenceCategory(this); fakeHeader.setTitle(R.string.pref_header_general); getPreferenceScreen().addPreference(fakeHeader); addPreferencesFromResource(R.xml.pref_general); // Add 'backup' preferences, and a corresponding header. fakeHeader = new PreferenceCategory(this); fakeHeader.setTitle(R.string.pref_header_backup); getPreferenceScreen().addPreference(fakeHeader); addPreferencesFromResource(R.xml.pref_backup); 

Esto hace el truco para mí.

  • Los colores de Android no funcionan en mi dispositivo físico
  • Importar la biblioteca de Google Play Services en Android Studio
  • Captura todas las excepciones de tipo de programación de Android
  • Error de Compilación NDK de Android NDK_PROJECT_PATH = nulo
  • Obtener json de HttpResponse
  • Utilice glide para cargar mapa de bits en ImageView
  • Android: el teclado no aparece en la ventana flotante
  • La orientación de la vista previa en el modo horizontal se gira en el sentido de las agujas del reloj con Camera2 api
  • Confundido entre syncAdapter, servicios, cargadores, proveedores y asynctask?
  • Cuestiones de Android Strings
  • cómo crear androide linearlayout con RTL orientación horizontal
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.