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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:02:38