Как я могу перейти на android макет с Xamarin.froms - PullRequest
0 голосов
/ 17 апреля 2020

Я разработал приложение, используя Xamarin.forms. Итак, у меня есть три основные папки и файлы, как показано ниже:

MyProject_xamarin:

MainPage.xaml

Page1.xaml

Page2.xaml

...

MyProject_xamarin. Android

...

Ресурс >> Макет >> activity_main. xml activity_main. xml имеет следующий код:

    <LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
<Switch
        android:id="@+id/SubscribeToRegion1"
        android:text="Region 1"
        android:textAppearance="?android:attr/textAppearanceMediumInverse"
        android:padding="10dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <Switch
        android:id="@+id/SubscribeToRegion2"
        android:text="R2"
        android:textAppearance="?android:attr/textAppearanceMediumInverse"
        android:padding="10dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

<!--  ... and three more switch controls -->
    </LinearLayout>

код C#, который я должен обработать, был написан в MainActivity.cs, как показано ниже:

            using System;

    using Android.App;
    using Android.Content.PM;
    using Android.Runtime;
    using Android.Views;
    using Android.Widget;
    using Android.OS;
    using Android.Util;
    using Firebase.Iid;
    using Android.Gms.Common;
    using Firebase.Messaging;

    namespace Notifications.Droid
    {
        [Activity(Label = "Notifications", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
        public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
        {
            TextView msgText;

            protected override void OnCreate(Bundle savedInstanceState)
            {
                TabLayoutResource = Resource.Layout.Tabbar;
                ToolbarResource = Resource.Layout.Toolbar;

                base.OnCreate(savedInstanceState);
                //     var btnGetData = FindViewById<Button>(Resource.Id.button1);
                SetContentView(Resource.Layout.activity_main);
                msgText = FindViewById<TextView>(Resource.Id.msgText);
                // var Unscbscribe = FindViewById<Button>(Resource.Id.UnscbscribefromAll);

                var btnRegion1 = FindViewById<Switch>(Resource.Id.SubscribeToRegion1);
                var btnRegion2 = FindViewById<Switch>(Resource.Id.SubscribeToRegion2);
                var btnRegion3 = FindViewById<Switch>(Resource.Id.SubscribeToRegion3);
                var btnRegion4 = FindViewById<Switch>(Resource.Id.SubscribeToRegion4);
                var btnRegion5 = FindViewById<Switch>(Resource.Id.SubscribeToRegion5);

                // default values (all checked), we need some sort of (remember changes)
                btnRegion1.Checked = true;
                btnRegion2.Checked = true;
                btnRegion3.Checked = true;
                btnRegion4.Checked = true;
                btnRegion5.Checked = true;

                btnRegion1.CheckedChange += (a, b) =>
                 {
                     bool isChecked = b.IsChecked;
                     if (isChecked)
                         FirebaseMessaging.Instance.SubscribeToTopic("R1");
                     else
                         FirebaseMessaging.Instance.UnsubscribeFromTopic("R1");
                 };

                btnRegion2.CheckedChange += (c, d) =>
                {
                    bool isChecked = d.IsChecked;
                    if (isChecked)
                        FirebaseMessaging.Instance.SubscribeToTopic("R2");
                    else
                        FirebaseMessaging.Instance.UnsubscribeFromTopic("R2");
                };

                btnRegion3.CheckedChange += (e, f) =>
                {
                    bool isChecked = f.IsChecked;
                    if (isChecked)
                        FirebaseMessaging.Instance.SubscribeToTopic("R3");
                    else
                        FirebaseMessaging.Instance.UnsubscribeFromTopic("R3");
                };

                btnRegion4.CheckedChange += (g, h) =>
                {
                    bool isChecked = h.IsChecked;
                    if (isChecked)
                        FirebaseMessaging.Instance.SubscribeToTopic("R4");
                    else
                        FirebaseMessaging.Instance.UnsubscribeFromTopic("R4");
                };

                btnRegion5.CheckedChange += (i, j) =>
                {
                    bool isChecked = j.IsChecked;
                    if (isChecked)
                        FirebaseMessaging.Instance.SubscribeToTopic("R5");
                    else
                        FirebaseMessaging.Instance.UnsubscribeFromTopic("R5");
                };


            Xamarin.Essentials.Platform.Init(this, savedInstanceState);
            global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
            LoadApplication(new App());
        }




        public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
        {
            Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);

            base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
        }
    }
}

miemss_xamarin. iOS

...

Теперь в mainPage.xaml есть кнопки, каждая из которых перемещается на определенную страницу c как показано ниже:

   ... <StackLayout Grid.Row="1" Grid.Column="0" Orientation="Vertical">
                    <Image Source="img`enter code here`.png"  
                       Grid.Row="1"  
                       Grid.Column="0"  
                       BackgroundColor="White" 
                       WidthRequest="60" HeightRequest="60" 
                     >
                    <Image.GestureRecognizers>
                        <TapGestureRecognizer Tapped="TapGestureRecognizer_Tapped_2"/>
                    </Image.GestureRecognizers>
                </Image>
                    <Label Text="CBRNE Resources" HorizontalTextAlignment="Center" />
                </StackLayout> ...

, и я использовал приведенный ниже код для перехода на новую страницу:

                private async void TapGestureRecognizer_Tapped_2(object sender, EventArgs e)
            {
                await Navigation.PushAsync(new Page2());
            }



....

То, что я сделал, заставило проект начать с Page1.xaml. Но я не знаю, что мне нужно изменить, чтобы открыть этот xml файл. Я нажимаю на кнопку выше (вместо Page2). Надеюсь, теперь это имеет смысл,

...