最近我决定尝试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(...)”方法“推送”两个屏幕有关。
关于如何实际修复它的任何想法?
修改
概述:“MainView.cs”只是一个内容页面,顶部有一个标签,后面是两个垂直排列的按钮。
如何重现例外:点击主视图上的“获取所有用户”按钮。我已经修改了代码,一旦单击按钮就推送相同的视图,而不是推送另一个视图(具有用户列表视图的视图,我没有包含,只是为了简化)。单击该按钮后,它将通过调用“Navigation.PushAsync(...)”导航到“MainView”的新实例。这将在加载屏幕后触发异常。
答案 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()));
}
}