- Forum-Beiträge: 650
08.11.2024, 21:17:18 via Website
08.11.2024 21:17:18 via Website
Hallo zusammen
Meine App hat Optionen. Diese verwalte ich mit SharedPreference. Wenn ich bereits Optionen vorhanden sind, dann läuft die Methode "onSharedPreferenceChanged" ohne Probleme.
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
Map<String, ?> map_key;
Object pool_key;
Preference wo = findPreference(key);
map_key = sharedPreferences.getAll();
if((wo != null) && (map_key != null)) {
pool_key = map_key.get(key);
if(pool_key.getClass().isInstance("class.java.lang.String")) {
wo.setSummary(sharedPreferences.getString(key, " - "));
}
}
}
Wenn ich aber eine neuinstallation mache und die Optionen das erste mal aufrufe, dann kommt ein hässlicher Fehler:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
Wie kann ich verhindern, dass dieser Fehler nicht mehr auftritt?
package ch.robbisoft.sakristanhilfe;
import android.content.SharedPreferences;
import android.os.Bundle;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
import java.util.Map;
public class SettingsFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
addPreferencesFromResource(R.xml.preferences);
//Eingabe anzeigen
onSharedPreferenceChanged(getPreferenceManager().getSharedPreferences(), "key_termin_titel");
onSharedPreferenceChanged(getPreferenceManager().getSharedPreferences(), "key_terminbeschrieb");
onSharedPreferenceChanged(getPreferenceManager().getSharedPreferences(), "key_terminort");
onSharedPreferenceChanged(getPreferenceManager().getSharedPreferences(), "key_vor");
onSharedPreferenceChanged(getPreferenceManager().getSharedPreferences(), "key_nach");
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
Map<String, ?> map_key;
Object pool_key;
Preference wo = findPreference(key);
map_key = sharedPreferences.getAll();
if((wo != null) && (map_key != null)) {
pool_key = map_key.get(key);
if(pool_key.getClass().isInstance("class.java.lang.String")) {
wo.setSummary(sharedPreferences.getString(key, " - "));
}
}
}
@Override
public void onResume() {
super.onResume();
getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onPause() {
getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
super.onPause();
}
}
Gruss Renato
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.