Xamarin.Forms中DisplayAlert登出确认功能异常求助
嘿,我一眼就揪出问题所在了!咱们一步步来解决:
核心问题:DisplayAlert的返回值判断错了
DisplayAlert返回的是布尔值(bool),不是字符串!点击「Yes」时它返回true,点击「No」返回false。你原来用answer.Equals("Yes")去判断,这个条件永远不会成立,所以跳转逻辑根本没执行,自然不管点啥都留在当前页。
修正后的完整代码示例
public async void LogoutBtn(object sender, EventArgs e) { var answer = await DisplayAlert("Exit", "Do you want to exit the App?", "Yes", "No"); // 正确判断:answer为true代表用户点了Yes if(answer) { // 清空用户设置(补充你需要清空的其他项) Settings.FirstName = string.Empty; // Settings.OtherProperty = ...; // 跳转到登录页,根据你的项目导航结构选合适的方式: // 方式1:如果登录页是新页面,推入导航栈 await Navigation.PushAsync(new LoginPage()); // 方式2:如果登录页是根页面,直接回到根 // await Navigation.PopToRootAsync(); // 方式3:如果用Shell导航,指定路由 // await Shell.Current.GoToAsync("//LoginPage"); } // 点击No的话啥都不用做,自动停留在个人资料页 }
额外小提醒
虽然async void在按钮点击事件里是合法的,但如果后续有异常处理需求,建议尽量用async Task(不过事件处理器本身只能是void返回,这个不用改)。
内容的提问来源于stack exchange,提问作者Janine Alexander
相关产品推荐
相关产品推荐

