Xamarin Android:如何从导航视图的if语句中打开新页面?
简单实现Xamarin Android页面跳转(最小改动版)
嗨,刚上手Xamarin Android不用慌,针对你说的「在if语句里调用另一个页面、不想大改现有导航抽屉模板」的需求,用Activity跳转是最省心的方案,完全不用碰Fragment或者复杂的分支逻辑,几步就能搞定:
第一步:先准备好目标页面
右键你的Xamarin Android项目 → 「添加」→「新建项」→ 选择「Android Activity」,给它起个名字比如SecondActivity,VS会自动帮你生成对应的布局文件和Activity代码,不用手动写太多。
第二步:在if语句里加跳转代码
回到你的MainActivity,找到你要加判断的if语句位置(比如导航抽屉菜单点击的逻辑里),直接插入以下代码就行:
// 假设你的if条件是「点击了某个菜单项」或者「满足某个业务逻辑」 if (item.ItemId == Resource.Id.nav_custom_menu) // 这里替换成你的实际判断条件 { // 1. 创建Intent,指定当前页面上下文和要跳转的目标Activity Intent jumpIntent = new Intent(this, typeof(SecondActivity)); // 2. 启动目标页面,完成跳转 StartActivity(jumpIntent); }
额外小补充(如果需要传数据)
要是你需要给新页面传点数据,比如字符串、数字,只需要加一行:
// 在StartActivity之前添加,把数据存在Intent里 jumpIntent.PutExtra("user_name", "Stephen");
然后在SecondActivity的OnCreate方法里取数据:
string userName = Intent.GetStringExtra("user_name");
适配导航抽屉模板的实际例子
如果你用的是VS17默认的导航抽屉模板,菜单点击逻辑一般在OnNavigationItemSelected方法里,改成if判断的完整示例大概是这样:
public override bool OnNavigationItemSelected(IMenuItem item) { // 判断点击的是自定义菜单项 if (item.ItemId == Resource.Id.nav_second_page) { Intent intent = new Intent(this, typeof(SecondActivity)); StartActivity(intent); } // 其他if判断可以继续加 else if (item.ItemId == Resource.Id.nav_home) { // 回到首页的逻辑,比如刷新当前内容或者什么都不做 } // 记得关闭导航抽屉(模板原有代码,不用改) DrawerLayout drawer = FindViewById<DrawerLayout>(Resource.Id.drawer_layout); drawer.CloseDrawer(GravityCompat.Start); return true; }
这种方式完全不改动原模板的核心结构,只需要加几行代码就能实现页面跳转,对你刚入门的情况特别友好,不用去纠结Fragment的复杂用法~
内容的提问来源于stack exchange,提问作者Stephen Devlin
相关产品推荐
相关产品推荐

