如何导航 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
并换掉正在显示的 Fragment
。 Fragment
本质上是一个附加了一些生命周期的视图。
var ft = FragmentManager.BeginTransaction();
ft.Add(containerViewId, fragment);
ft.Show(fragment);
ft.Commit();
其中 containerViewId
是用于显示 Fragment
的占位符区域,这将在您的 Resource.Layout.initialpage
中定义。 fragment
是您的特定 Fragment
.
走哪条路由你决定。
我目前正在尝试制作我的第一个应用程序,但找不到在表单之间导航的方法。
我试过 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
并换掉正在显示的 Fragment
。 Fragment
本质上是一个附加了一些生命周期的视图。
var ft = FragmentManager.BeginTransaction();
ft.Add(containerViewId, fragment);
ft.Show(fragment);
ft.Commit();
其中 containerViewId
是用于显示 Fragment
的占位符区域,这将在您的 Resource.Layout.initialpage
中定义。 fragment
是您的特定 Fragment
.
走哪条路由你决定。