- Forum-Beiträge: 650
22.05.2023, 21:31:14 via Website
22.05.2023 21:31:14 via Website
Hallo zusammen
Für die Optionen meiner App verwende ich den Preferencmanager. Das ging bisher ohne Probleme, da ich immer einen String ablegte.
Neu habe ich eine Swicht drin. Nun Stürzt die App ab wenn ich den Schalter umstelle.
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
Preference wo = findPreference(key);
if(wo != null) {
if(key.compareTo("key_mute") != 0) {
wo.setSummary(sharedPreferences.getString(key, " - "));
}
}
}
Das kann ich verstehen, da die Switch kein String enthält. Zur Not habe ich einfach den Key ausgeschlossen. Das geht so.
Aber es gibt bestimmt eine bessere Lösung. Hat mir jemand eine Lösung?
Gruss Renato
Hier mein SettingFragment
package ch.robbisoft.sakristanhilfe;
import android.content.SharedPreferences;
import android.os.Bundle;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
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) {
Preference wo = findPreference(key);
if(wo != null) {
if(key.compareTo("key_mute") != 0) {
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();
}
}
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.