c# - Xamarin android OnSharedPreferenceChangeListener

标签 c# android xamarin.android xamarin preferenceactivity

我有此 Activity ,但遇到未调用 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 事件来处理首选项更改但没有结果。

谢谢帮助。

最佳答案

我找到了解决方案!改变

PreferenceScreen.SharedPreferences.
RegisterOnSharedPreferenceChangeListener(this);

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

会成功的。

希望对大家有帮助

关于c# - Xamarin android OnSharedPreferenceChangeListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17452738/

相关文章:

c# - 简单的电子邮件转发服务器

c# - C# 中的泛型方法

android:fusion 图表不显示任何内容

android - 如何使警报对话框填充 90% 的屏幕尺寸?

c# - 如何在 MonoDroid 中使用应用内结算?

android - 从 MvvmCross 中删除 System.ServiceModel

c# - 为什么这不起作用?

c# - 当我创建一个新类的实例时,我该如何做到这一点,它必须获得一个参数?

android - 属性 application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) 来自 [com.android.support :support-compat:28. 0.0]

xaml - 键盘重叠在登录屏幕上 -Xamarin .forms