- Forum-Beiträge: 615
06.06.2021, 12:14:01 via Website
06.06.2021 12:14:01 via Website
Hallo zusammen
Nur mal so Fragen ob jemand eine bessere Idee hat.
In meiner App verwende ich für die Optionen ein "SharedPreference". Die habe ich wie folgt gemacht:
package ch.robbisoft.sun_app;
import android.content.SharedPreferences;
import android.os.Bundle;
import androidx.preference.ListPreference;
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);
//Setzen der Anzeigeoptionen
ListPreference wer = findPreference("key_anzeige");
CharSequence[] entries = { getString(R.string.lbl_grad), getString(R.string.lbl_gradminuten), getString(R.string.lbl_gradminutensekunden) };
CharSequence[] entryValues = { "grd", "grdmin", "grdminsek" };
wer.setEntries(entries);
wer.setEntryValues(entryValues);
//Eingabe anzeigen
onSharedPreferenceChanged(getPreferenceManager().getSharedPreferences(), "key_distanz");
onSharedPreferenceChanged(getPreferenceManager().getSharedPreferences(), "key_anzeige");
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
Preference wo = findPreference(key);
if(key.equals("key_anzeige") || key.equals("key_distanz")) {
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();
}
}
Die Methode "onSharedPreferenceChanged" gefällt mir nicht. Denn ich muss entscheiden welche Option geändert wurde. Denn bei Switches stürzt das ganze ab.
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
Preference wo = findPreference(key);
if(key.equals("key_anzeige") || key.equals("key_distanz")) {
wo.setSummary(sharedPreferences.getString(key, " - "));
}
}
Kann man das nicht anders oder besser lösen?
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.