Xamarin android OnSharedPreferenceChangeListener

时间:2013-07-03 15:59:03

标签: c# android xamarin.android xamarin preferenceactivity

我有这个活动,但是没有调用OnSharedPreferenceChanged有问题。 我的用例是我想在偏好描述中显示偏好值。下面翻译的代码是从java翻译的,其中完美无缺。

[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寻求帮助。

1 个答案:

答案 0 :(得分:8)

我找到了解决方案!改变

PreferenceScreen.SharedPreferences.
RegisterOnSharedPreferenceChangeListener(this);

PreferenceManager.GetDefaultSharedPreferences(this).
RegisterOnSharedPreferenceChangeListener(this);

会做到这一点。

我希望它会对某人有所帮助。