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

.NET Android Maui中OnBackPressedDispatcher.AddCallback缺失解决方案咨询

.NET Android 中添加返回按钮回调的解决方案

1. 确认Activity基类

确保你的Activity继承自AppCompatActivity(它实现了LifecycleOwner接口,是使用OnBackPressedDispatcher的前提):

public class MainActivity : AppCompatActivity
{
    // ...
}

2. 实现自定义返回回调类

继续沿用继承OnBackPressedCallback的方式,编写你的返回逻辑:

using AndroidX.Core.App;

public class CustomBackCallback : OnBackPressedCallback
{
    private readonly AppCompatActivity _activity;

    // 构造函数传入Activity实例,base(true)表示默认启用回调
    public CustomBackCallback(AppCompatActivity activity) : base(true)
    {
        _activity = activity;
    }

    public override void HandleOnBackPressed()
    {
        // 这里编写你的自定义返回逻辑
        // 示例:弹出确认退出对话框
        new AlertDialog.Builder(_activity)
            .SetTitle("提示")
            .SetMessage("确定要退出应用吗?")
            .SetPositiveButton("确定", (sender, args) => _activity.Finish())
            .SetNegativeButton("取消", (sender, args) => {})
            .Show();

        // 如果需要触发默认返回行为,调用:
        // _activity.OnBackPressedDispatcher.OnBackPressed();
    }
}

3. 在Activity中添加回调

在Activity的生命周期方法(比如OnCreate)中,实例化回调并添加到OnBackPressedDispatcher:

protected override void OnCreate(Bundle? savedInstanceState)
{
    base.OnCreate(savedInstanceState);
    SetContentView(Resource.Layout.activity_main);

    // 实例化回调并添加到Dispatcher
    var backCallback = new CustomBackCallback(this);
    OnBackPressedDispatcher.AddCallback(this, backCallback);
}

注意事项

  • 若提示AddCallback方法缺失,请检查项目是否引用了AndroidX.Core NuGet包(.NET Android项目默认已包含,但迁移项目可能需要手动确认)
  • 可以通过回调类的Enabled属性动态开启/关闭回调逻辑

内容的提问来源于stack exchange,提问作者Nathan Sokalski

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 02:37:13