Обновите заголовок EditTextPreference, когда другие предпочтения пульсируют в Android
У меня есть приложение Android с меню настроек. У меня есть некоторые EditTextPreferences, которые при изменении кнопки в пользовательском интерфейсе тоже меняется. Кроме того, я хотел бы реализовать предпочтение, которое сбрасывает значения всех EditTextPreferences. Теперь у меня есть:
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();
}
Когда я запускаю сброс настроек, ничего не меняется. Однако, когда я закрываю фрагмент настроек и снова открываю его, предпочтение и кнопка в пользовательском интерфейсе изменяются на значение по умолчанию. Как я могу обновить кнопку и настройку, когда я пульсирую настройку сброса?
1 ответ
Наконец я нашел решение. Я изменил код слушателя:
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;
}
});