我希望能够在摘要字段中显示EditTextPreference的值。具体来说,我想在PreferenceFragmentCompat中执行此操作。

import android.support.v7.preference.PreferenceFragmentCompat;

public class SettingsFragment extends PreferenceFragmentCompat {

    @Override
    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
        addPreferencesFromResource(R.xml.preferences);
    }
}


首选项文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <EditTextPreference
        android:defaultValue="DEVICE01"
        android:key="device_id"
        android:title="Device ID" />
</PreferenceScreen>


我看到了其他解决方案,但是没有一个解决方案包含在PreferenceFragmentCompat中如何执行此操作。

最佳答案

我认为,这与每个简单的PreferenceFragment中的方法相同:
在xml文件中:

android:summary="@string/your_string_resource"


在代码中:

    EditTextPreference editTextPreference = (EditTextPreference) findPreference(YOUR_PREFERENCE_KEY);
    editTextPreference.setSummary(sharedPreferences.getString(YOUR_PREFERENCE_KEY, defaultValue));
    editTextPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
        @Override
        public boolean onPreferenceChange(Preference preference, Object o) {

            String yourString = o.toString();
            sharedPreferences.edit().putString(YOUR_PREFERENCE_KEY, yourString).apply();
            editTextPreference.setSummary(yourString);

            return true;
        }
    });

08-18 07:30