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
相关产品推荐
相关产品推荐

