private bool ValidateExit(bool Exit = false) { bool IsChanged = false; try { IsChanged = !( CSIWebServerName == CSIWebServerEdit.Text && Configuration == ((string)ConfigurationSpinner.SelectedItem ?? string.Empty) && Theme == InterpretThemeValue(((string)ThemeSpinner.SelectedItem ?? string.Empty)) && SavedUser == UserEdit.Text && SavedPassword == PasswordEdit.Text && EnableHTTPS == EnableHTTPSSwitch.Checked && UseRESTForRequest == UseRESTForRequestSwitch.Checked && LoadPicture == LoadPictureSwitch.Checked && ForceAutoPost == ForceAutoPostSwitch.Checked && ShowSuccessMessage == ShowSuccessMessageSwitch.Checked && RecordCap == RecordCapEdit.Text && SaveUser == SaveUserSwitch.Checked && SavePassword == SavePasswordSwitch.Checked ); if (IsChanged) { FragmentTransaction ft = FragmentManager.BeginTransaction(); CSIMessageDialog SignOutDialog = new CSIMessageDialog(GetString(Resource.String.app_name), GetString(Resource.String.SettingChanged), DialogTypes.YesNoCancle, this.BaseActivity); SignOutDialog.YesHandler += (sender, args) => { bool bChangeTheme = false; if (CSISystemContext.CSIWebServerName != Theme) { bChangeTheme = true; } SaveConfiguration(); if (Exit) { Dismiss(); Dispose(); if (bChangeTheme) { Intent intent = new Intent(Application.Context, typeof(MainActivity)); Bundle bundle = BaseActivity.GetCSISystemContext().BuildBundle(); intent.PutExtra("CSISystemContext", bundle); BaseActivity.StartActivity(intent); BaseActivity.Finish(); } } }; SignOutDialog.NoHandler += (sender, args) => { CSISystemContext.CSIWebServerName = CSIWebServerName; CSISystemContext.Theme = Theme; CSISystemContext.SavedUser = SavedUser; CSISystemContext.SavedPassword = SavedPassword; CSISystemContext.EnableHTTPS = EnableHTTPS; CSISystemContext.UseRESTForRequest = UseRESTForRequest; CSISystemContext.LoadPicture = LoadPicture; CSISystemContext.ForceAutoPost = ForceAutoPost; CSISystemContext.ShowSuccessMessage = ShowSuccessMessage; CSISystemContext.RecordCap = RecordCap; CSISystemContext.SaveUser = SaveUser; CSISystemContext.SavePassword = SavePassword; if (Exit) { Dismiss(); Dispose(); } }; SignOutDialog.CancelHandler += (sender, args) => { }; SignOutDialog.Show(ft, ""); } else { Dismiss(); Dispose(); } } catch (Exception Ex) { WriteErrorLog(Ex); return(false); } return(true); }