4
이 활동이 있고 OnSharedPreferenceChanged가 호출되지 않는 문제가 있습니다. 유스 케이스에 환경 설정 값을 표시하고 싶습니다. 아래 번역 된 코드는 Java에서 번역되었으며 어디에서 완벽하게 작동합니다.Xamarin android OnSharedPreferenceChangeListener
[Activity]
public class PrefActivity : PreferenceActivity, ISharedPreferencesOnSharedPreferenceChangeListener
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
AddPreferencesFromResource(Resource.Xml.preferences);
}
protected override void OnResume()
{
base.OnResume();
PreferenceScreen.SharedPreferences.
RegisterOnSharedPreferenceChangeListener(this);
}
protected override void OnPause()
{
base.OnPause();
PreferenceScreen.SharedPreferences.
UnregisterOnSharedPreferenceChangeListener(this);
}
#region ISharedPreferencesOnSharedPreferenceChangeListener implementation
public void OnSharedPreferenceChanged(ISharedPreferences sharedPreferences, string key)
{
Preference pref = FindPreference(key);
if (pref is ListPreference)
{
ListPreference listPref = (ListPreference)pref;
listPref.Summary = listPref.Entry;
}
}
#endregion
}
스피 사용 Xamarin.Android의 v4.6.8의 위의 코드는이 작업 필자는 기본 설정 변경을 처리하지만 결과 PreferenceScreen.PreferenceChange 이벤트를 사용하여 시도 할 수있는 마지막 시도이다.
Tahnks 도움.
확실히, 감사합니다 :) – rouen
물론 나를 위해 않았다. 매우 도움이됩니다. –
안녕하세요. 동일한 작업을 구현하고 있지만 기본 설정 조각을 대신 사용하고 있습니다. 그래서 PreferenceManager.GetDefaultSharedPreferences (Activity)를 사용하여 프래그먼트 클래스 내에서 OnPause 및 OnResume 메소드를가집니다. RegisterOnSharedPreferenceChangeListener (this) 및 OnPause에서 등록을 취소합니다. 그러나, 그들은 여전히 내 조각 내에서 호출되지 않습니다. PreferenceFragment를 사용하여 구현이 달라야합니까? – naffie