如何导航 android xamarin

How to navigate android xamarin

我目前正在尝试制作我的第一个应用程序,但找不到在表单之间导航的方法。 我试过 App.Current.MainPage = new settings(); 但它只是出现了一个错误 od missing directory for app.current 我也尝试过 https://www.c-sharpcorner.com/article/page-navigation-between-two-pages-in-xamarin-forms-using-visual-studio/ 上的那个,但无济于事。 这是我的参考代码,我试图在 nextpress()

中尝试后将用户移动到不同的部分
using Android.OS;
using Android.Support.V7.App;
using Android.Runtime;
using Android.Widget;
using System;
using System.Text;
using System.IO;
using System.Net;
using System.Net.Sockets;
using Android.Views;
using Xamarin.Essentials;
using Xamarin.Android;
using Android.App.Admin;
using Android.App.Assist;


namespace serverconand
{
    [Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
    
    public class MainActivity : AppCompatActivity
    {
        public static IPEndPoint ep;
        public static string target;
        public static string password;
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            Xamarin.Essentials.Platform.Init(this, savedInstanceState);
            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.initialpage);
            Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            Button nextbut = FindViewById<Button>(Resource.Id.button1);
            
            nextbut.Click += (o, e) => 
            {
                nextpress();
            };
            
        }

        private void nextpress()
        {
            
            try
            {
                password = FindViewById<EditText>(Resource.Id.passphrase).Text;
                string targetip = FindViewById<EditText>(Resource.Id.targip).Text;
                int targetport = int.Parse(FindViewById<EditText>(Resource.Id.targport).Text);
                IPAddress broadcast = IPAddress.Parse(targetip);
                ep = new IPEndPoint(broadcast,targetport);
                
                
            }
            catch
            {
                FindViewById<TextView>(Resource.Id.textView3).Text = "Incorrect input, please try again";
            }
        }

        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);
        }
    }
}

.xml代码

?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:text="Next"
        android:layout_width="800px"
        android:layout_height="200px"
        android:minWidth="25px"
        android:minHeight="25px"
        android:id="@+id/button1"
        android:layout_alignParentBottom="true"
        android:layout_centerInParent="true"
        android:clickable="true"/>
        
    <EditText
        android:layout_width="400px"
        android:layout_height="100px"
        android:id="@+id/targip"
        android:inputType="text|none"
        android:layout_centerHorizontal="true"
        android:translationY="100px" />
    <TextView
        android:text="Public IP adress of Target"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textView1"
        android:layout_centerHorizontal="true"
        android:translationY="30px" />
    <TextView
        android:text="Port of target"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textView2"
        android:layout_centerHorizontal="true"
        android:translationY="230px" />
    <EditText
        android:layout_width="400px"
        android:layout_height="100px"
        android:id="@+id/targport"
        android:inputType="none|text"
        android:layout_centerHorizontal="true"
        android:translationY="300px" />
    <TextView
        android:text=""
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_width="500px"
        android:layout_height="wrap_content"
        android:id="@+id/textView3"
        android:layout_centerHorizontal="true"
        android:translationY="800px" />
    <TextView
        android:text="Passphrase"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textView4"
        android:layout_centerHorizontal="true"
        android:translationY="430px" />
    <EditText
        android:layout_width="400px"
        android:layout_height="100px"
        android:id="@+id/passphrase"
        android:inputType="none|text"
        android:layout_centerHorizontal="true"
        android:translationY="500px" />
    
    

</RelativeLayout>

您尝试过 PushAsync 方法吗?请参阅下面的 Microsoft 文档 link:

https://docs.microsoft.com/en-us/dotnet/api/Xamarin.Forms.INavigation.PushAsync?view=xamarin-forms

等待Navigation.PushAsync(设置);

查看您的代码,您似乎正在使用 Xamarin.Android。

有两种导航到其他内容的方法。

1.活动

就像您的 MainActivity 一样,您可以创建另一个 Activity 并使用 Intent.

导航到那个
var intent = new Intent(this, typeof(MyOtherActivity));
StartActivity(intent);

如果您创建一个新的 Activity,请确保对其应用 [Activity] 属性,以便它在您的应用程序清单中注册。

2。碎片

或者在 Android 上,您可以只使用一个 Activity 并换掉正在显示的 FragmentFragment 本质上是一个附加了一些生命周期的视图。

var ft = FragmentManager.BeginTransaction();
ft.Add(containerViewId, fragment);
ft.Show(fragment);
ft.Commit();

其中 containerViewId 是用于显示 Fragment 的占位符区域,这将在您的 Resource.Layout.initialpage 中定义。 fragment 是您的特定 Fragment.

走哪条路由你决定。