SharedPreference 에 Switch 상태를 저장할 때,
조회수 1297회
이 코드는 Xamarin 코드입니다.
_Display_Switch = (Switch)_TT.FindViewById(Resource.Id._Display_Switch);
_Display_Switch.Checked = _Saved_Data.GetBoolean("Test_Switch", false);
if (_Saved_Data.GetBoolean("Test_Switch", false) == true)
{
Toast.MakeText(Activity, "Display를 활성화 합니다", ToastLength.Short).Show();
}
else if (_Saved_Data.GetBoolean("Test_Switch", false) == false)
{
Toast.MakeText(Activity, "Display를 비활성화 합니다", ToastLength.Short).Show();
}
_Display_Switch.CheckedChange += _Display_Switch_CheckedChange;
private void _Display_Switch_CheckedChange(object sender, CompoundButton.CheckedChangeEventArgs e)
{
if (e.IsChecked == true)
{
Toast.MakeText(Activity, "Display를 활성화 합니다", ToastLength.Short).Show();
}
else if (e.IsChecked == false)
{
Toast.MakeText(Activity, "Display를 비활성화 합니다", ToastLength.Short).Show();
}
_Data_Edit.PutBoolean("Test_Switch", e.IsChecked);
_Data_Edit.Apply();
}
이런식으로 아래에서 이벤트를 줬던걸 위에서 한번 더 해줘야지 정상적으로 껏다 켰을 때도 이벤트가 나타나더라구요. 이걸 위에 문장에서 다시 한번 이벤트 선언 안하고 바로 사용할 수는 없는건가요?
if (_Saved_Data.GetBoolean("Test_Switch", false) == true)
{
Toast.MakeText(Activity, "Display를 활성화 합니다", ToastLength.Short).Show();
}
else if (_Saved_Data.GetBoolean("Test_Switch", false) == false)
{
Toast.MakeText(Activity, "Display를 비활성화 합니다", ToastLength.Short).Show();
}
다시 말해서, 이 부분을 삭제하더라도 껏다켰을때 정상적으로 이벤트가 발생하도록 하고 싶습니다..
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
switch
객체를 가져오고CheckedChange
를 등록 한 후에 preference 값을 불러와서checked
값을 설정 해주면 될 것 같습니다. 현재 순서는 checked 에 preference 값이 먼저 세팅 되고 CheckedChange 를 등록 하고 있는 것 같네요.-
(•́ ✖ •̀)
알 수 없는 사용자
- 이상한게, pis님 말대로 해보기도 했는데, 그렇게 하면 true로 했을때는 정상적으로 작동으로 해요, 그런데 false 상태에서는 나갔다왔을 때 아무런 토스트도 뜨질않더라구요;;; 알 수 없는 사용자 2018.8.6 15:38
- 지금 다시 해봣는데, True에 대한 내용은 제대로 저장이 잘 되는 것 같아요. 그런데 false 의 내용이 저장이 안되는 것 같은데 이거 왜 이러는걸까요?ㅠ 알 수 없는 사용자 2018.8.6 16:06
- 음 CompoundButton 코드를 살펴보니 default value 는 false 이고 값이 달라질때만 CheckedChanged 콜백을 호출 하게 되있네요.. 따라서 false 상태에서 종료 -> 실행 시에는 토스트 메세지가 실행 안되는게 맞고, 아무래도 앱 실행 -> checked 값 설정 -> checked 값에 따른 토스트 창 show -> CheckedChange 등록 순서로 처리 해야 할 것 같습니다 알 수 없는 사용자 2018.8.6 16:16
- 근데 pis님 말씀대로라면 지금 위에 코드와 달라지는 부분이 없지 않나요? 알 수 없는 사용자 2018.8.6 16:34
- 네 결국엔 처음에 처리하신대로 하는것이 불가피해 보입니다. 알 수 없는 사용자 2018.8.6 16:39
- 음. 역시 그렇게 하는 수 밖에 없겠네요 ㅠ 상담해주셔서 감사합니다! 알 수 없는 사용자 2018.8.6 17:44
-
댓글 입력