2012-02-12 2 views
0

У меня есть куча EditTextPreferences и созданный вами TimePickerPrefernce (вместе с одним CheckBoxPreference), и ни одно из EditTextPreference или TimePickerPreference не сохраняется, но CheckBox делает это. Я думал, что это могло быть из-за минимального минимума, который у меня есть в моем подклассе PreferenceActivity, но, видя, как сбрасывается флажок, я не уверен, что это так.Диалоговые предпочтения из моей функции предпочтения не сохраняются

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

Вот мое предпочтение XML-файл:

<PreferenceCategory android:title="@string/settings_general_header" > 
    <EditTextPreference 
     android:defaultValue="15" 
     android:summary="@string/settings_time_to_sleep" 
     android:title="@string/settings_time_to_sleep_title" 
     android:numeric="integer" /> 
    <EditTextPreference 
     android:defaultValue="90" 
     android:summary="@string/settings_sleep_cycle_time_summary" 
     android:title="@string/settings_sleep_cycle_minutes" 
     android:numeric="integer" /> 
    <EditTextPreference 
     android:defaultValue="5" 
     android:summary="@string/how_many_results" 
     android:title="@string/settings_results_to_show_title" 
     android:numeric="integer" /> 
</PreferenceCategory> 
<PreferenceCategory android:title="@string/wakeupat_settings_header" > 
    <CheckBoxPreference 
     android:key="@string/save_wakeupat_time" 
     android:title="@string/save_wakeupat_time" android:defaultValue="false"/> 

    <TimePickerPreference 
     android:dependency="@string/save_wakeupat_time" 
     android:title="@string/wakeupat_preferred_time" /> 
</PreferenceCategory> 

и вот мой PreferenceActivity подкласс:

package com.krej.timeforbed; 

import java.util.List; 

import android.os.Bundle; 
import android.preference.PreferenceActivity; 
import android.preference.PreferenceFragment; 
import android.preference.PreferenceManager; 
import android.util.Log; 
import android.widget.Button; 

public class Settings extends PreferenceActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     addPreferencesFromResource(R.xml.settings); 
    } 

} 

ответ

4

вам нужно определить android:key во всех элементов управления (EditTextPreference и TimePickerPreference), чтобы позволить автоматически сохранять значения.

И так как вы определили его в CheckBoxPreference, вот почему его экономия автоматически.

+0

А, это имеет смысл! Кажется, все работает сейчас. Благодаря! – krej

0

У меня была та же проблема, что PreferenceActivity, казалось, правильно читала предпочтения, но я не видел изменений в myPreferences после того, как пользователь изменил некоторые атрибуты. Все, что вам нужно, прежде чем получить доступ к установкам после того как они обновляются PreferencesActivity, чтобы воссоздать myPreferences как это:

myPreferences=PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 

... кажется, что два экземпляра предпочтения не синхронизированы (может быть, потому что он кэшируется как-то) , Изменения в одном экземпляре не отображаются в другом, хотя они оба имеют одно и то же имя (или оба являются предпочтительными по умолчанию совместно используемыми).