Paramétrage de la préférence UI Champ sommaire à la valeur de la préférence

Nouveau sur Android, j'ai un certain code lorsque l'utilisateur modifie une préférence Je met à jour le champ Résumé dans la préférence UI pour être la valeur qu'ils ont entré. Cependant, lorsque l'activité de préférence est créée, je souhaite définir les champs Résumé pour être les valeurs dans les préférences correspondantes. S'il vous plaît donnez votre avis. Merci.

public class MyPreferenceActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preference); SharedPreferences sp = getPreferenceScreen().getSharedPreferences(); sp.registerOnSharedPreferenceChangeListener(this); } public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { Preference pref = findPreference(key); if (pref instanceof EditTextPreference) { EditTextPreference etp = (EditTextPreference) pref; pref.setSummary(etp.getText()); } } } 

  • Comment faire des préférences en lecture seule (programmées)?
  • Est-il possible de créer un tableau de Bitmap dans Android?
  • Fonctionnalités de langue Java 7 avec Android
  • Android: la dernière ligne de texte a été coupée
  • Développement avec Eclipse et Phonegap / Cordova 3
  • Activité de démarrage d'Android depuis le service
  • Erreur "android.database.sqlite.SQLiteException: no table table" dans de rares cas
  • Retrofit conserve l'oubli de mes cookies :( Android
  • Android ndk-build ignorant APP_ABI: = x86
  • Supprimez complètement les analyses de firebase de l'application Android
  • Utilisation d'un projet de bibliothèque Android Activité dans un autre projet
  • Android proguard, garde la classe intérieure
  • 3 Solutions collect form web for “Paramétrage de la préférence UI Champ sommaire à la valeur de la préférence”

    Je suis nouveau aussi, peut-être que ce n'est pas le meilleur code, mais cela est similaire à ce que je fais. Vous voulez probablement vous inscrire à l'écoute surResume et annuler l'inscription surPause plutôt que surCréer. J'espère que ça aide.

    Principalement, vous devez simplement saisir le préf, la valeur pref et définir le résumé.

     public class MyPreferenceActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preference); SharedPreferences sp = getPreferenceScreen().getSharedPreferences(); EditTextPreference editTextPref = (EditTextPreference) findPreference("thePrefKey"); editTextPref .setSummary(sp.getString("thePrefKey", "Some Default Text")); } protected void onResume() { super.onResume(); getPreferenceScreen().getSharedPreferences() .registerOnSharedPreferenceChangeListener(this); } protected void onPause() { super.onPause(); getPreferenceScreen().getSharedPreferences() .unregisterOnSharedPreferenceChangeListener(this); } public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { Preference pref = findPreference(key); if (pref instanceof EditTextPreference) { EditTextPreference etp = (EditTextPreference) pref; pref.setSummary(etp.getText()); } } } 

    Cela a fonctionné pour moi.

     public class PrefsActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener { private Preference pref; private String summaryStr; String prefixStr; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.prefs); SharedPreferences sharedPref = getPreferenceScreen().getSharedPreferences(); sharedPref.registerOnSharedPreferenceChangeListener(this); } public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { //Get the current summary pref = findPreference(key); summaryStr = (String)pref.getSummary(); //Get the user input data prefixStr = sharedPreferences.getString(key, ""); //Update the summary with user input data pref.setSummary(summaryStr.concat(": [").concat(prefixStr).concat("]")); } } 

    Ce que je fais habituellement est:
    1 – Créez une nouvelle classe qui étend le type de préférence dont je dois afficher (1 par type de préférence) 2 – Dans son code, effectuez l'actiob approprié pour afficher le résumé mis à jour
    3 – Renvoie cette classe dans le fichier res / xml / preferences.xml

    Permettez-moi un petit exemple, bon pour un EditTextPreference:

    CLS_Prefs_Edit.java

     /** * CLS_Prefs_Edit class * * This is the class that allows for a custom EditTextPrefence * (auto refresh summary). * * @category Custom Preference * @author Luca Crisi (luca.crisi.lc@gmail.com) * @copyright Luca Crisi * @version 1.0 */ package com.your_name.your_app; /* -------------------------------- Imports --------------------------------- */ import android.content.Context; import android.preference.EditTextPreference; import android.util.AttributeSet; public final class CLS_Prefs_Edit extends EditTextPreference { /* ---------------------------- Constructors ---------------------------- */ public CLS_Prefs_Edit(final Context ctx, final AttributeSet attrs) { super(ctx, attrs); } public CLS_Prefs_Edit(final Context ctx) { super(ctx); } /* ----------------------------- Overrides ------------------------------ */ @Override public void setText(final String value) { super.setText(value); setSummary(getText()); } } 

    Res / xml / preferences.xml

     <?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > <PreferenceCategory android:title="@string/pref_phone_cat"> <!-- NORMAL EditTextPreference, NO summary update --> <!-- <EditTextPreference --> <!-- android:widgetLayout="@layout/arr_dn" --> <!-- android:key="phone" --> <!-- android:title="@string/pref_phone_title" --> <!-- android:summary="@string/pref_phone_summ" --> <!-- android:defaultValue="" --> <!-- android:inputType="phone" --> <!-- android:digits="+1234567890" --> <!-- /> --> <!-- MY EditTextPreference, WITH summary update --> <com.your_name.your_app.CLS_Prefs_Edit android:widgetLayout="@layout/arr_dn" android:key="phone" android:title="@string/pref_phone_title" android:summary="@string/pref_phone_summ" android:defaultValue="" android:inputType="phone" android:digits="+1234567890" /> </PreferenceCategory> </PreferenceScreen> 

    Bien sûr, définissez vos chaînes dans / res / values ​​/ strings, et vous avez terminé.

    Notez que cette solution fonctionne pour PreferenceFragments et PreferenceActivities .
    Je l'utilise pour une application qui fonctionne sur 2.2 Froyo (montrant une PréférenceActivité) ainsi que sur 4.4 KitKat (montrant un PréférenceFragment)

    J'espère que cela vous aidera.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.