Я разработал приложение, используя 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). Надеюсь, теперь это имеет смысл,