Xamarin表示Android系统异常" Android一次只能在屏幕上显示一个导航页面"

时间:2014-06-14 16:33:31

标签: c# xamarin xamarin.android

最近我决定尝试Xamarin Forms,所以我开始将我的Windows Phone / Android Xamarin项目迁移到新的“Forms”格式。

迁移两个简单的屏幕(视图)后,代码在我的Windows Phone上运行得很好,但它在Android平台上崩溃了。我使用两个设备来测试代码,没有模拟器来避免不必要的麻烦。

Android平台上引发的异常是:System.Exception: Android only allows one navigation page on screen at a time

问题与“View”类本身无关,因为一旦我将其设置为Android的“开始屏幕”,它就不会发生。

我担心这个问题与我通过Xamarin提供的“Navigation.PushAsync(...)”方法“推送”两个屏幕有关。

关于如何实际修复它的任何想法?

修改

Code Sample

概述:“MainView.cs”只是一个内容页面,顶部有一个标签,后面是两个垂直排列的按钮。

如何重现例外:点击主视图上的“获取所有用户”按钮。我已经修改了代码,一旦单击按钮就推送相同的视图,而不是推送另一个视图(具有用户列表视图的视图,我没有包含,只是为了简化)。单击该按钮后,它将通过调用“Navigation.PushAsync(...)”导航到“MainView”的新实例。这将在加载屏幕后触发异常。

1 个答案:

答案 0 :(得分:3)

您正在嵌套导航页面。这不是必需的。试试这个:

public class ViewsHandler
{
        public static Page GetMainPage()
        {
            return new MainView();
        }

        public static Page GetUsersListPage()
        {
            return new UsersListView ();
        }
}

public class MainActivity : AndroidActivity
{
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // Initializing Xamarin Form
            Xamarin.Forms.Forms.Init (this, bundle);

            // create a single NavigationPage wrapping your content
            SetPage (new NavigationPage(ViewsHandler.GetMainPage()));
        }
}