2015-03-13 46 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; 
      } 
     });