Daten der Preferencen anzeigen

  • Antworten:6
  • Bentwortet
Robbiani Renato
  • Forum-Beiträge: 609

05.05.2021, 17:38:13 via Website

Hallo zusammen

Ich habe den PreferencManager kennen gelernt. Das ist eine super Sache.

image

Ich habe die Optionen wie folgt aufgebaut

<?xml version="1.0" encoding="utf-8"?>

xmlns:android="http://schemas.android.com/apk/res/android">

<PreferenceCategory
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:title="@string/lbl_opt_tetel">

    <EditTextPreference
        android:key="key_termin_titel"
        android:selectAllOnFocus="true"
        android:singleLine="true"
        android:title="@string/lbl_termin_titel"
        app:summary="@string/lbl_hint_termintitel" />
    <EditTextPreference
        android:key="key_terminbeschrieb"
        android:selectAllOnFocus="true"
        android:singleLine="true"
        android:title="@string/lbl_beschrieb"
        app:summary="@string/lbl_hint_terminbeschrieb" />
    <EditTextPreference
        android:key="key_terminort"
        android:selectAllOnFocus="true"
        android:singleLine="true"
        android:title="@string/lbl_ort"
        app:summary="@string/lbl_hint_terminort" />
</PreferenceCategory>

Das einzige was mich stört, ist dass die Eingabe nicht angezeigt wird. Wenn ich auf die Option tippe, wird ein Dialog geöffnet wo ich den Text eintragen kann. Wenn ich den Dialog mit OK schliesse, wird wiederum nur der Titel und der Beschrieb angezeigt. Ich hätte aber gern, dass auch die Eingabe angezeigt wird.

Gibt es einen Weg wo man das machen kann?

Gruss Renato

Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

05.05.2021, 18:27:05 via Website

Da musst du die Beschreibung im Code so aktualisieren, dass diese dem aktuellen Wert deiner Preference entspricht

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Kommentieren
Robbiani Renato
  • Forum-Beiträge: 609

06.05.2021, 16:49:18 via Website

Ciao Rafael

Danke für die Hilfe. Aber ich komme nicht weiter. Im Beispiel steht folgender Code

getFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit();

Bei mir im Buch steht aber folgendes

getSupportFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit();

Verwende ich "getFragmentManager()", dann kommt der Fehler, dass er an Stelle von

public class SettingsFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener

das haben möchte

public class SettingsFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener

Verwende ich aber den "PreferenceFragment" kommt die Warnung, dass dies veraltet ist. Aber ohne dem Code Schnipsel kann ich kein

getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);

verwenden. Bin ich auf dem Holzweg oder gibt es einen Andere Möglichkeit den Listener zu registrieren?

Gruss Renato

Hilfreich?
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

06.05.2021, 17:33:01 via Website

Ob du nun getSupportFragmentManager() oder getFragmentManager() verwendest sollte für die Logik an sich egal sein.
Das eine ist halt aus den SupportLibs/AndroidX und das andere direkt aus dem SDK.
Versuche deine Referenzen konsistent zu halten, dann passiert das nicht.
Du musst den Code von Rafael dann halt auf deinen Fall übertragen und nicht nur 1:1 kopieren.

— geändert am 06.05.2021, 17:33:11

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Kommentieren
Robbiani Renato
  • Forum-Beiträge: 609

06.05.2021, 18:08:27 via Website

Ciao Pascal

Genau das versuche ich. Leider ist das nicht so einfach. Das eine ist veraltet und das andere weiss ich nicht wie es geht.

Gruss Renato

Hilfreich?
Kommentieren
Robbiani Renato
  • Forum-Beiträge: 609

06.05.2021, 18:24:23 via Website

Nun geht es! Man muss es nur am richtigen Ort machen. Ich habe es in der Activity versucht. Aber wenn man es ins Fragment aufnimmt, dann funktioniert es.

Danke allen die geholfen haben.

Hilfreich?
Kommentieren