2015-03-07 4 views
0

Я создаю несколько предпочтений выбора цвета (расширенных от предпочтений) в методе onCreate моего фрагмента предпочтений.Предпочтение имеет неправильное значение при восстановлении PreferenceFragment

Colorpickers описывают текущий активный проект. Поэтому, когда пользователь выбирает новый дизайн (в том же PreferenceFragment), все цветовые подборщики должны меняться в соответствии с новым дизайном.

Для этого я получаю новые цветовые значения текущего дизайна и перестраивать PreferenceFragment

public static void RebuildSettings() { 

colorFieldList = GetNewColorFields(); 

if (mPrefsFragment != null) { 

    mPrefsFragment.onDestroy(); 
    mPrefsFragment.onCreate(null); 

} else Log.i(Patterns.TAG, "mPrefsFragment = null"); 

} 

В OnCreate метод моего Preference фрагмента я затем воссоздать цвет поля из colorFieldList (с цветами из нового дизайн), как это:

public void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 

    [...] 

PreferenceCategory colorSettings = (PreferenceCategory) findPreference("prefCat_ColorSettings"); 

    for (int i = 0; i < colorFieldList.size(); i++) { 

     AmbilWarnaPreference colorPicker = new AmbilWarnaPreference(getActivity(), null); 
     colorPicker.forceSetValue(colorFieldList.get(i).color); 
     colorPicker.setTitle(colorFieldList.get(i).name); 
     colorPicker.setSummary("Set color in " + colorFieldList.get(i).name); 
     colorPicker.setKey("colorField" + colorFieldList.get(i).index); 
     colorPicker.setOnPreferenceChangeListener(colorListener); 

     if (colorSettings != null) 
      colorSettings.addPreference(colorPicker); 

    } 

    [...] 
} 

Теперь я могу изменить дизайн и цвета будет обновлен штрафом в соответствии с новым дизайном НО только тогда, когда я не изменил любое поле выбора цвета еще. Поля изменяются так, как будто они должны быть , как только я меняю цветовое поле/выбираю новый цвет, это поле навсегда останется цветом, выбранным мной, хотя я полностью перестраиваю настройки при каждом изменении дизайна!

Что мне не хватает? Почему цвета обновляются до тех пор, пока в SharedPreferences (?) Не сохраняется значение, но не после?

Я предполагаю, что андроид всегда захватывает значение выбора цвета из общих настроек после его установки, но как я могу его переписать в OnCreate, чтобы отображать цвета из выбранного дизайна?

Ваша помощь очень ценится! Благодаря!

+0

У вас нет идеи? : - / – monogon

ответ

0

Я понял, что, как я полагал, проблема заключалась в том, что элементы всегда получали значения по умолчанию для своего конкретного ключа.

Чтобы перезаписать это поведение, я должен был позвонить Применить() (обязательство также буду работать, я думаю) в редакторе в методе OnCreate() мой фрагмент предпочтения, как это:

getPreferenceManager().getSharedPreferences().edit().putInt("colorField" + colorFieldList.get(i).index, colorFieldList.get(i).color).apply(); 

(я это сделал в цикле, который я разместил выше, поэтому каждому предпочтению цвета был присвоен новый цвет при создании с перезаписанным значением предпочтения)

 Смежные вопросы

  • Нет связанных вопросов^_^