【问题标题】:Android only allows one navigation page on screen at a time usingAndroid 一次只允许在屏幕上使用一个导航页面
【发布时间】:2016-06-27 09:46:40
【问题描述】:

以下两种实现有什么区别?

 public App()
    {
        // The root page of your application
        MainPage = new Views.MainPage();
    }   
 public App()
    {     
        MainPage = new NavigationPage(new MainPage());
    }

如果我的主页继承了 MasterDetailPage,上面的第一个代码将起作用,但第二个代码会在我调试我的 android 应用程序时返回错误消息,告诉我“android 一次只允许在屏幕上显示一个导航页”。

  public class MainPage : MasterDetailPage
    {

        MasterPage masterPage;
        public MainPage()
        {
            masterPage = new MasterPage();
            Master = masterPage;
            Detail = new NavigationPage(new AnotherPage());

【问题讨论】:

    标签: xamarin xamarin.android xamarin.forms


    【解决方案1】:

    我可能对你的要求有点困惑,但如果你在做的话

    MainPage = new NavigationPage(new MainPage());
    

    你的主页是

    public class MainPage : MasterDetailPage
    {
    
        MasterPage masterPage;
        public MainPage()
        {
            masterPage = new MasterPage();
            Master = masterPage;
            Detail = new NavigationPage(new AnotherPage());
    

    那你在做

    NavigationPage > MasterDetailPage > NavigationPage

    MasterDetail 或 Navigation 都应该是根目录,并且不能将它们放在彼此的内部。彼此之间不能有 2 个导航页面。

    【讨论】:

    • 你理解正确。首先我是这样实现的,我收到了这个错误消息。在更改为 MainPage = new Views.MainPage(); 后我修复了这实际上是重定向到相同的内容页面,但我不明白有什么区别。最终两者都在导航到 MainPage 吗?
    • 您可以将导航页面作为 MasterDetail 中的详细信息,或者您可以将 MasterDetail 放在导航页面中,但在任何级别的导航页面中都不能有导航页面。这是一个仅限 Android 的限制,但最终使其成为 Xamarin Forms 限制。
    • 感谢您的解释。现在很清楚,但这意味着什么? MainPage = new Views.MainPage();我猜 app.css 就像 WPF 中的 app.xaml 一样,对吧?如果是,那是不是也意味着导航到 MainPage?
    • MainPage 是应用的根页面。您可以在那里放置 NavigationPage 或 MasterDetailPage 或 ContentPage。除非您在其中放一个,否则没有 NavigationPage。使用 Views.MainPage 我认为您将 MasterDetailPage 放在那里,并且它的 Detail 部分中有一个 NavigationPage 很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-05
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多