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

Xamarin.Android多布局切换时无法从Layout2跳转至Layout3如何解决

问题根因

OnCreate生命周期方法仅会在Activity首次创建时执行一次:

  • 首次启动Activity时你加载了Layout1,此时仅为Layout1的btnOne绑定了点击事件
  • 点击btnOne切换到Layout2后,没有为Layout2中的btnTwo绑定点击事件,点击按钮自然没有响应,也不会触发报错
  • 你额外编写的Layout2逻辑代码并未在切换布局后执行,所以无法触发跳转逻辑

解决方案

方案1:单Activity切换布局(适合简单场景)

所有布局复用同一个Activity,每次切换布局后手动绑定对应控件的事件,代码示例如下:

protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);
    Xamarin.Essentials.Platform.Init(this, savedInstanceState);
    LoadLayoutOne();
}

private void LoadLayoutOne()
{
    SetContentView(Resource.Layout.LayoutOne);
    Button btnOne = FindViewById<Button>(Resource.Id.btnOne);
    btnOne.Click += (s, e) => LoadLayoutTwo();
}

private void LoadLayoutTwo()
{
    SetContentView(Resource.Layout.LayoutTwo);
    Button btnTwo = FindViewById<Button>(Resource.Id.btnTwo);
    btnTwo.Click += (s, e) => SetContentView(Resource.Layout.LayoutThree);
}

方案2:多Activity实现(Android官方推荐写法)

每个布局对应独立的Activity,跳转逻辑更清晰,后续扩展维护更方便:

  1. 新建两个Activity类:LayoutTwoActivity、LayoutThreeActivity
  2. 在LayoutTwoActivity的OnCreate方法中加载Layout2布局,绑定btnTwo的点击事件
  3. 跳转使用Android原生的Intent实现,示例代码如下:

主Activity(加载Layout1)跳转逻辑

private void btnOne_Click(object Sender, EventArgs e)
{
    Intent intent = new Intent(this, typeof(LayoutTwoActivity));
    StartActivity(intent);
}

LayoutTwoActivity跳转逻辑

protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);
    SetContentView(Resource.Layout.LayoutTwo);
    Button btnTwo = FindViewById<Button>(Resource.Id.btnTwo);
    btnTwo.Click += btnTwo_Click;
}

private void btnTwo_Click(object Sender, EventArgs e)
{
    Intent intent = new Intent(this, typeof(LayoutThreeActivity));
    StartActivity(intent);
}

LayoutThreeActivity逻辑

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

注意:Xamarin.Android中给Activity类添加[Activity]特性即可自动完成清单注册,无需手动修改AndroidManifest.xml。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 22:36:03