更新编辑文本首选项标题,当其他首选项在Android中脉冲时



我有一个带有设置菜单的Android应用程序。我有一些编辑文本首选项,当更改UI中的按钮时也会更改。此外,我想实现一个首选项,该首选项重置所有编辑文本首选项的值。现在我有:

偏好.xml

<PreferenceScreen
    android:key="custom_balizamiento"
    android:persistent="false"
    android:title="@string/balizamiento" >
  <EditTextPreference
    android:defaultValue="@string/custom_event_1"
    android:key="custom_event_balizamiento_1"
    android:title="@string/custom_event_1" />
  <EditTextPreference
    android:defaultValue="@string/custom_event_2"
    android:key="custom_event_balizamiento_2"
    android:title="@string/custom_event_2" />
</PreferenceScreen>
<Preference
        android:key="button_reset"
        android:summary="@string/pref_reset_summary"
        android:title="@string/pref_reset" />

设置片段.java

Preference buttonreset = (Preference) findPreference("button_reset");
    buttonreset.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
        @Override
        public boolean onPreferenceClick(Preference arg0) {
            pref.edit().clear();
            pref.edit().commit();
            pref.edit().apply();
            updatePreference();
            pref.edit().commit();
            pref.edit().apply();
            return true;
        }
    });
public void updatePreference() {
    Map<String, ?> keys = pref.getAll();
    for (Map.Entry<String, ?> entry : keys.entrySet()) {
        if (entry.getKey().contains("custom_event")) {
            Preference auxpref = findPreference(entry.getKey());
            String newValue = pref
                    .getString(entry.getKey(), entry.getKey());
            auxpref.setTitle(newValue);
        }
    }
    pref.edit().commit();
}

当我按下重置预栅栏时,没有任何变化。但是,当我关闭设置片段并再次打开它时,UI 中的首选项和按钮将更改为默认值。当我按下重置首选项时,如何更新按钮和首选项?

终于找到了解决方案。我更改了侦听器代码:

Preference buttonreset = (Preference) findPreference("button_reset");
buttonreset.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
    @Override
    public boolean onPreferenceClick(Preference arg0) {
        pref.edit().clear().commit();
        pref.edit().apply();
        updatePreference();
        pref.edit().commit();
        pref.edit().apply();
        PreferenceManager.setDefaultValues(getActivity(), R.layout.preferences, true);
        pref.edit().apply();
                return true;
            }
        });

相关内容

  • 没有找到相关文章

最新更新