我需要通过 Xamarin.Android
中的 Activity 调用 Xamarin.Forms Page
。
我使用了[Java.Interop.Export("btnOne1Click")]
来调用Xamarin.Forms Page
。
如果我使用App.Current.MainPage = new RootPage();,代码运行不会出现错误
,但它不会导航到该页面
。
我不想在 MainActivity
上调用 [Java.Interop.Export("btnOne1Click")]
。
[Activity(Label = "FailureActivity")]
public class FailureActivity : Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
RequestWindowFeature(WindowFeatures.NoTitle);
SetContentView(Resource.Layout.Failure);
Button button = FindViewById<Button>(Resource.Id.txt_go_onjobs);
}
[Java.Interop.Export("btnOne1Click")]
public void btnOne1Click(Android.Views.View v)
{
try
{
Xamarin.Forms.Forms.Context.StartActivity(typeof(RootPage));
}
catch(Exception ex)
{ }
}
}
最佳答案
Xamarin 表单在一项事件上运行,该事件最接近您的主要事件。
有两个示例项目向您展示如何在代码的 native 部分和表单部分之间进行通信,可以在此处找到:
- https://github.com/xamarin/xamarin-forms-samples/tree/master/Forms2Native
- https://github.com/xamarin/xamarin-forms-samples/tree/master/Native2Forms
但是,要回答您的问题,您需要执行以下操作:
button = FindViewById<Button> (Resource.Id.txt_go_onjobs);
button.Click += (sender, e) => {
// this is your Xamarin.Forms screen
StartActivity(typeof(FormsActivity));
};
现在,在您的 FormsActivity
中调用:
[Activity (Label = "FormsActivity")]
public class FormsActivity : Xamarin.Forms.Platform.Android.FormsApplicationActivity
{
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
Xamarin.Forms.Forms.Init (this, bundle);
LoadApplication (new App ());
}
}
关于xamarin - 在 Xamarin Android 中单击按钮来调用 Xamarin.Forms.Page?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46053929/