2012-02-12 2 views
0

EditTextPreferences와 TimePickerPrefernce (내가 만든 것)가 하나의 CheckBoxPreference와 함께 있고 EditTextPreference 또는 TimePickerPreference가 저장되지 않지만 CheckBox는 저장하지 않습니다. 나는 그것이 내 PreferenceActivity 서브 클래스에서 가지고있는 최소한의 것이었을 것이라고 생각했지만 체크 박스가 저장되는 방법을 보았을 때 그것이 맞는지 확실하지 않다.내 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를 서브 클래스입니다 : 당신이 모든 컨트롤에 android:key를 정의 할 필요가

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

(EditTextPreferenceTimePickerPreference) 프레임 워크가 자동으로 값을 저장하게합니다.

CheckBoxPreference에 정의되어 있으므로 자동으로 저장됩니다.

+0

아, 맞아! 모든 것이 지금 일하는 것 같습니다. 감사! – krej

0

나는 동일한 문제가 있었는데, PreferenceActivity는 환경 설정을 정확하게 읽은 것처럼 보였지만 사용자가 일부 속성을 변경 한 후에는 myPreferences에서 변경 사항을 볼 수 없었습니다. 당신은 기본 설정에 액세스하기 전에이 PreferencesActivity 업데이트 후 당신이 필요로하는이 같은 myPreferences을 다시하는 것입니다

myPreferences=PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 

... 것 같다, 환경 설정의 두 인스턴스가 동기화되지 않습니다 (이 어떻게 든 캐시하기 때문에있을 수 있습니다) . 한 인스턴스의 변경 사항은 모두 같은 이름이지만 (또는 둘 다 기본 공유 된 preferences 임) 다른 인스턴스에도 나타나지 않습니다.