¿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>
- Android: Guardar el objeto android.net.Uri en la base de datos
- Detenga Android Studio con la ayuda de la biblioteca
- Cómo asignar AffineTransform de java a Matrix de Android?
- Obtenga coordenadas GPS: Android
- ¿Cómo configuro IntelliJ IDEA para aplicaciones de Android?
- ¿Cuál es el propósito de las categorías de intención?
- Cómo incluir la dependencia de JAR en una biblioteca AAR
- Android - estilo de botón predeterminado
- ¿Por qué Android Wear DataMap no tiene un método putIntArray?
- ¿Hay un HttpClient que maneja las solicitudes de almacenamiento en caché por sí solo?
- Android OpenGL ES: ¿Cómo se selecciona un objeto 2D?
- ADB sobre inalámbrica
- Visualización del mensaje de Android Toast
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í.
- Selector de archivos para Android
- Duplicar valor en el encabezado de NavigationView después de actualizar el texto del encabezado