Задача: сохранить значение элемента Switch при следующих открытиях приложения (если Switch включен однажды, то чтобы оставался включенным и после перезапуска приложения) Мой код, который не работает:
Context context;
Switch SettingsSwitchKMHToMPH;
protected override void OnCreate(Bundle savedInstanceState)
{ //остальной код
context = Application.Context;
SettingsSwitchKMHToMPH=FindViewById<Switch>(Resource.Id.SettingsSwitchKMHToMPH);
SettingsSwitchKMHToMPH.CheckedChange += SettingsSwitchKMHToMPH_CheckedChange;
}
private void SettingsSwitchKMHToMPH_CheckedChange(object sender, CompoundButton.CheckedChangeEventArgs e)
{
ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPreferences(context);
ISharedPreferencesEditor editor = prefs.Edit();
SettingsSwitchKMHToMPH.Checked= prefs.GetBoolean("key_for_kmhtomph", false);
if (SettingsSwitchKMHToMPH.Checked)
{
SettingsSwitchKMHToMPH.Toggle();
Toast.MakeText(context, "Off", ToastLength.Long).Show();
editor.PutBoolean("key_for_kmhtomph", false);
editor.Apply();
}
else
{
SettingsSwitchKMHToMPH.Toggle();
Toast.MakeText(context, "On", ToastLength.Long).Show();
editor.PutBoolean("key_for_kmhtomph",true);
editor.Apply();
}
}
Решение оказалось простым. Просто сделал кнопку "Apply", по нажатию которой записывается значение Switch
buttonApply.Click += (sender, e) =>
{
if (switchKMHToMPH.Checked == true)
{
editor.PutBoolean("key_kmhtomph", true);
editor.Apply();
}
else
{
editor.PutBoolean("key_kmhtomph", false);
editor.Apply();
}
};
Продвижение своими сайтами как стратегия роста и независимости