私は本から例を取得しようとしていますAndroid用のMonoを使用したProfessional Android Programming and .Net/C# (pages 202 to 204) working.
変更リスナーを登録および登録解除するには、次のコード サンプルを示します。
using System;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.Preferences;
namespace MonoForAndroidPreferences
{
[Activity(Label = "User Preferences")]
public class UserPreferences : PreferenceActivity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Create your application here
this.AddPreferencesFromResource(Resource.Layout.userpreferences);
}
protected override void OnResume()
{
base.OnResume();
this.GetPreferences(FileCreationMode.Private).RegisterOnSharedPreferenceChangeListener(this);
}
protected override void OnPause()
{
base.OnPause();
this.GetPreferences(FileCreationMode.Private).UnregisterOnSharedPreferenceChangeListener(this);
}
public void OnSharedPreferenceChanged(ISharedPreferences prefs, string key)
{
// Do something with the changed value pointed to by key
}
}
}
もちろん、両方ともRegisterOnSharedPreferenceChangeListener
からにUnregisterOnSharedPreferenceChangeListener
変換することはできません。UserPreferences
ISharedPreferencesOnSharedPreferenceChangeListener
著者がこれをどのように機能させるつもりだったのかはわかりません。どんな助けでも大歓迎です。
また、サンプル コードをwrox.comからダウンロードしようとしましたが、サンプル コードに環境設定の変更をリッスンする機能が含まれていませんでした。
編集:
次のコードはコンパイルされますOnSharedPreferenceChanged
が、設定で更新が行われたときに呼び出されることはありません。
public class UserPreferences : PreferenceActivity, ISharedPreferencesOnSharedPreferenceChangeListener
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Create your application here
this.AddPreferencesFromResource(Resource.Layout.userpreferences);
}
protected override void OnResume()
{
base.OnResume();
this.GetPreferences(FileCreationMode.Private).RegisterOnSharedPreferenceChangeListener(this);
}
protected override void OnPause()
{
base.OnPause();
this.GetPreferences(FileCreationMode.Private).UnregisterOnSharedPreferenceChangeListener(this);
}
void ISharedPreferencesOnSharedPreferenceChangeListener.OnSharedPreferenceChanged(ISharedPreferences prefs, string key)
{
// Do something with the changed value pointed to by key
}
}