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

Xamarin.Android中如何传递Activity类型至方法?并实现返回上一Activity

在Xamarin.Android中实现基于BaseActivity的返回上一页功能及Activity类型传递

我来帮你捋清楚这个需求的实现步骤,咱们一步步来搞定:

1. 先修正BaseActivity里的返回方法

你原来写的GoToPreviousActivity参数有点问题——咱们要传递的是Activity的类型,不是Activity实例,因为启动页面需要的是类型信息。把方法改成下面这样:

protected void GoToPreviousActivity(Type targetActivityType)
{
    // 用Intent指定要启动的目标Activity类型
    StartActivity(new Intent(this, targetActivityType));
    Finish(); // 关闭当前页面
}

2. 子Activity中绑定Toolbar返回事件

每个继承自BaseActivity的页面,只需要在初始化Toolbar时,给返回按钮绑定点击逻辑,直接传入上一个Activity的类型就行。举个例子,假设当前是DetailActivity,要返回ListActivity:

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

    var toolbar = FindViewById<Toolbar>(Resource.Id.toolbar);
    SetSupportActionBar(toolbar);
    // 显示返回箭头
    SupportActionBar.SetDisplayHomeAsUpEnabled(true);

    // 绑定返回点击事件
    toolbar.NavigationOnClick += (sender, e) => 
    {
        this.GoToPreviousActivity(typeof(ListActivity));
    };
}

关于“传递Activity类型”的说明

在C#里,要传递一个类的类型,咱们用typeof()运算符就可以——它会返回对应类的Type对象,这个对象刚好能被Intent用来识别要启动哪个Activity,完美适配Xamarin.Android的页面启动逻辑。

如果你的页面跳转逻辑比较固定,也可以考虑在BaseActivity里维护一个页面栈,或者通过Intent传递上一页的类型信息,但直接用typeof(目标Activity)是最直观、最可控的方式,适合大多数场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 13:27:50