android - 将 UI 首选项摘要字段设置为首选项的值

标签 android android-preferences

Android 新手,当用户更改首选项时,我有一些代码我将 UI 首选项中的摘要字段更新为他们输入的值。但是,当创建首选项 Activity 时,我想将摘要字段设置为相应首选项中的值。 请指教。谢谢。

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());
        }
    }
}

最佳答案

我也是新手,所以可能不是最好的代码,但这与我正在做的类似。您可能希望在 onResume 上注册您的监听器并在 onPause 上取消注册,而不是在 onCreate 上。我希望这会有所帮助。

主要是你只需要抓取首选项,首选项值并设置摘要。

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());
        }
    }
}

关于android - 将 UI 首选项摘要字段设置为首选项的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3827356/

相关文章:

java - 反向地理编码 Android 问题

android - 如何在首选项 Activity 中添加自定义布局?

android - findviewbyid 在 preferenceactivity 中的使用

java - 首选项 fragment 在交易中返回 null

Android 首选项重叠工具栏

android - 如何在android中使用Service更新sqlite数据库

java - Android OpenGL ES 1.x 中绘制临时对象的最佳方式

android - 为 Google Play 服务版本构建 gradle 失败

android - 将陀螺仪读数转换为以度为单位的方位

android - Preferences.xml 中 PreferenceScreen 的 Intent