Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Xamarin的天然形式转变_Android_Xamarin_Xamarin.android_Navigation - Fatal编程技术网

Android Xamarin的天然形式转变

Android Xamarin的天然形式转变,android,xamarin,xamarin.android,navigation,Android,Xamarin,Xamarin.android,Navigation,我正在使用Xamarin forms应用程序,该应用程序使用本机摄像头。我正在尝试从表单切换到本机,然后再切换到基于 在Android中: SetPage(App.GetSecondPage()) 形式: public static Page GetSecondPage () { var formsPage = new NavigationPage (new MyThirdPage ()); return formsPage; } 我关心的是

我正在使用Xamarin forms应用程序,该应用程序使用本机摄像头。我正在尝试从表单切换到本机,然后再切换到基于

在Android中: SetPage(App.GetSecondPage())

形式:

public static Page GetSecondPage ()
    {
        var formsPage = new NavigationPage (new MyThirdPage ()); 

        return formsPage;
    }
我关心的是,当我调用此函数时,它会给我android.view.InflateException:Binary XML文件行#1:Error-inflating class


如果我使用SetPage(new GetSecondPage()),我可以导航到另一个页面,但是不能在该页面上的任何位置使用Navigation.PushAsync()

您是否尝试过使用
page.CreateSupportFragment
方法

在活动中,您可以加载表单中定义的页面,如

protected override void OnCreate(Bundle bundle)
{
    base.OnCreate(bundle);
    Forms.Init(this, bundle);
    SetContentView(Resource.Layout.Main);          
    Android.Support.V4.App.Fragment mainPage = YourPage.CreateSupportFragment(this);
    SupportFragmentManager
        .BeginTransaction()
        .Replace(Resource.Id.fragment_frame_layout, mainPage)
        .Commit();

}

您可以参考

这是否回答了您的问题?这正是我所做的,正如我上面提到的,但这样做我会得到上面的错误。我正在将imagebyte作为参数传递给页面构造函数。它看起来像SetPage(App.RetryPage(imageBytes));这基本上是在本机平台内使用表单,如果我没有错的话?实际上,这对我来说是一个很大的工作。我也想实现iOS,我也必须这样做。因此,我尽量减少本机功能,同时只保留相机的本机功能。如果没有任何帮助,我将不得不这样做。您也可以在ios中使用类似的方法
Page.CreateViewController
。还有另一种方法,您可以使用messagingcenter在本机和窗体之间进行通信,然后按照您的建议互相切换使用过的messagingcenter:App.cs messagingcenter.Subscribe中的代码(这是“GoBack”,(s)=>{Device.beginInvokenMainThread(()=>MainPage.Navigation.PushAsync(new MainPage());});发送的另一个页面中的代码:Device.beginInvokeMainThread(()=>MessagingCenter.Send(此为“GoBack”)错误:Java.Lang.IllegalArgumentException:'未找到碎片容器{669a3c6#2 id=0x8e}的id 0x8e(未知)视图'