2015-03-13 47 views
0

我有一个带有设置菜单的Android应用程序。我有一些EditTextPreferences,当改变时UI中的按钮也改变了。此外,我想实现一个首选项,重置所有EditTextPreferences的值。现在我有:更新EditTextPreference标题时Android中的其他偏好设置为

preference.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" /> 

SettingsFragment.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(); 

} 

当我脉冲复位prefence,没有什么变化。但是,当关闭设置片段并再次打开它时,UI中的首选项和按钮将更改为默认值。当我重置重置首选项时,如何更新按钮和首选项?

回答

0

最后我找到了解决方案。我更改了听众代码:

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