Professional Android Programming with Mono for Android and .Net/C# (202〜204ページ)の書籍を参考にしようとしています。変更リスナーを登録し、登録解除するAndroid用モノラルを使用した設定変更のリッスン
それは次のサンプルコードを示します。コースの
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からダウンロードしようとしましたが、サンプルコードの環境設定の変更をリッスンしませんでした。
EDIT:更新が好みで行われたとき
次のコードはコンパイルが、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
}
}
SharedPreferencesはPreferenceScreenクラスの静的プロパティではないので、このコードの動作方法はわかりません。 – TimothyP
@TimothyPが同意しましたが、これは動作しません。 – Fammy