如何从 Android Activity 启动 Xamarin 表单

问题描述 投票:0回答:1

问题是如何从 Android 中的活动导航到 xamarin 表单 我的整个项目都在 Xamarin Android 中,但我必须调用同一项目中的 XAML(xamarin 表单)

我试过这个... Xamarin.Forms.Application.Current.MainPage.Navigation.PushModalAsync(new zxing_android.Resources.layout.Page2());

还有这个...

Intent intent = new Intent(this, typeof(zxing_android.Resources.layout.Page2));
StartActivity(intent);

在这两种情况下都给我一个错误

如图所示,我正在尝试从 Xamarin Android MainActivity 打开 Page2.axml

谢谢!!

.net xamarin xamarin.forms xamarin.android
1个回答
0
投票

首先,我不建议你在xamarin.android项目中使用xaml。应该在跨平台项目中使用。

在xamarin.android项目中,如果要显示内容页,可以参考xamarin.forms项目并使用

FormsAppCompatActivity
来渲染内容页。

  1. 在项目中安装
    Xamarin.Forms
    nuget 包。我安装了最新版本并将
    Xamarin.Google.Android.Maerial
    nuget 包更新到最新版本。
  2. 在项目中创建
    Xamarin.Forms.Application

App.xaml:

<Application xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="App3.App">
    <Application.Resources>

    </Application.Resources>
</Application>

App.cs:

using Xamarin.Forms.Xaml;

namespace App3
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class App : Xamarin.Forms.Application
    {
        public App()
        {
            InitializeComponent();
            MainPage = new Page1();
        }

    }
}
  1. Xamarin.Forms.Application
    加载到
    FormsAppCompatActivity
    :
using Xamarin.Forms.Platform.Android;

namespace App3
{
    [Activity(Label = "Activity1",Theme = "@style/MainTheme.Base")]
    public class Activity1 : FormsAppCompatActivity
    {

            protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            Xamarin.Essentials.Platform.Init(this, savedInstanceState);
            global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
            LoadApplication(new App());
        }
    }
}
  1. 进入MainActivity中的内容页面:
Button button = FindViewById<Button>(Resource.Id.button1);
button.Click += delegate
{
    var intent = new Intent(this, typeof(Activity1));
    StartActivity(intent);  
};

我的项目结构:

© www.soinside.com 2019 - 2024. All rights reserved.