You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:32:43