2011-11-06 3 views
2

확인란 컨트롤을 사용하여 환경 설정 화면을 만들려고합니다.변경되면 CheckBoxPreference에서 값 가져 오기

<CheckBoxPreference android:summaryOn="@string/mySummaryOn" 
    android:summaryOff="@string/mySummaryOff" 
    android:key="myCB" 
    android:title="my checkbox"/> 

변경 될 때마다이 부울 값을 가져오고 싶습니다. 내 응용 프로그램에서

는 내가 현 화면에서 체크 박스를 전환하는 경우에도

public boolean cbValue; 
@Override 
    public void onCreate() { 
     // The following line triggers the initialization of ACRA 
     ACRA.init(this); 
     prefs=PreferenceManager.getDefaultSharedPreferences(this); 
     prefs.registerOnSharedPreferenceChangeListener(this); 
     super.onCreate(); 
    } 

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, 
     String key) { 
    // TODO Auto-generated method stub 
    //FacebookStatus=prefs.getBoolean("myCB", true); 
    Toast.makeText(getBaseContext(), "Shared Preference Changes ",Toast.LENGTH_LONG).show(); 
} 

onSharedPreferenceChanged 방법이 전혀 호출되지 않습니다

을 OnSharedPreferenceChangeListener 구현 아래와 같이 했어요.

가치가 변경 될 때마다 공유 환경 설정에서 값을 얻어야하는 경우해야합니까?

+0

[Shared Preferences] (http://stackoverflow.com/questions/531427/how-do-i-display-the-current-value-of-an-android-preference-in-the)에서이 문제를 해결했습니다. -preference-su) .... 도움을 주셔서 대단히 감사합니다 – shanmugamgsn

답변

2

대신 OnSharedPreferenceChangeListener를 사용 :

선호 활동의 onCreate 방법 다음 줄을 추가합니다 (클래스 필드로) 리스너의 myCheckbox.setOnPreferenceChangeListener(myCheckboxListener)

코드 : Preference myCheckbox = findPreference("myCB") 그런 다음 myCheckbox 객체에 리스너를 적용

private OnPreferenceChangeListener myCheckboxListener = new OnPreferenceChangeListener() { 

    public boolean onPreferenceChange(Preference preference, Object newValue) { 
     // Read new value from Object newValue here 
     return true; 
    } 
}; 
+0

Antek .... 고맙습니다. myCheckbox.setOnPreferenceChangeListener (myCheckboxListener)는 myCheckboxListener가 해결할 수 있다고 말합니다 ... 구현해야합니까? – shanmugamgsn

+0

안녕하세요 Antek .... 체크 박스에서 불리언 값을 얻는 방법을 말할 수 있습니까? insidde onPreferenceClick ??????????? – shanmugamgsn

+0

안녕하세요 Antek [Shared Preferences] (http://stackoverflow.com/questions/531427/how-do-i-display-the-current-value-of-an-android-preference-in-the)에서이 문제를 해결했습니다. -preference-su) .... 도움을 주신 많은 분들께 감사드립니다. – shanmugamgsn

0

SharedPreferences 매개 변수 개체를 사용하여 새 값을 직접 읽을 수 있습니다. 당신은 키가 CheckBoxPreference에서 것을 알고 있다면 당신은 단지 값을 읽을 수 있습니다

@Override 
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { 

    if (key == getString(R.string.CheckBoxKeyId)) { 
     boolean myBool = sharedPreferences.getBoolean(key, false); 
     // do stuff 
    } 
} 

를 이것은 당신이 당신이 가진 수있는 CheckBoxPreference 각각에 대한 OnPreferenceChangeListener를 추가 절약 할 수 있습니다.