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

从Xamarin.Android迁移至MAUI:BaseActivity生命周期方法覆写失败

Xamarin.Android迁移MAUI:BaseActivity生命周期方法重写报错问题

问题描述

我正在将应用从Xamarin.Android迁移到MAUI,BaseActivity中的所有生命周期方法均报错,例如:

  • protected override void OnPause()
  • protected override void OnCreate(Bundle savedInstanceState)
  • protected override void OnResume()

报错提示:

Error CS0115 'BaseActivity.OnPause()': no suitable method found to override AndroidAppCore (net8.0-android)

在Xamarin.Android环境下BaseActivity.cs无此错误,但迁移到MAUI后出现该问题;且LoginActivity中的生命周期方法在MAUI中可正常工作。

相关代码结构

Activities/Base/BaseActivity.cs

namespace Common
{
    public abstract class BaseActivity : ISessionExpired, IPBottomNavBarIcon
}

Activities/Login/LoginActivity.cs

namespace PApp
{
    [Activity]
    public class PatientLoginActivity : Common.BaseActivity
}

问题原因及解决方案

你的BaseActivity没有继承Android原生的Android.App.Activity基类,导致无法识别并重写Activity的生命周期方法。

在Xamarin.Android中,BaseActivity应该是隐式或显式继承了Activity类,但当前代码仅实现了两个接口,没有继承Activity基类。LoginActivity因标注了[Activity]特性,MAUI编译时可能做了特殊处理,但BaseActivity本身缺少基类继承,所以内部的生命周期方法找不到可重写的父类方法。

修复方式:修改BaseActivity的继承关系,让它继承Android.App.Activity,代码如下:

namespace Common
{
    public abstract class BaseActivity : Android.App.Activity, ISessionExpired, IPBottomNavBarIcon
}

这样BaseActivity就能拥有Activity的所有生命周期方法,重写操作即可正常执行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 17:02:41