Android 表单将子页面添加到TabbedPage
我的应用程序中的主页是一个选项卡页 我有三个标签: 付款、配置、维护 其中一个选项卡由显示或不显示的设置控制。当更改为false时,我通过执行以下操作删除选项卡:Android 表单将子页面添加到TabbedPage,android,xamarin.forms,tabbedpage,Android,Xamarin.forms,Tabbedpage,我的应用程序中的主页是一个选项卡页 我有三个标签: 付款、配置、维护 其中一个选项卡由显示或不显示的设置控制。当更改为false时,我通过执行以下操作删除选项卡: tabPage.Children.Remove(ConfigTab); 这种移除效果很好。如果我重新打开选项卡,我可以使用以下代码添加选项卡: tabPage.Children.Add(ConfigTab); 但其已添加到列表末尾,并且缺少导航标题: 我研究了如何使用Insert方法来指定索引 tabPage.Children.
tabPage.Children.Remove(ConfigTab);
这种移除效果很好。如果我重新打开选项卡,我可以使用以下代码添加选项卡:
tabPage.Children.Add(ConfigTab);
但其已添加到列表末尾,并且缺少导航标题:
我研究了如何使用Insert方法来指定索引
tabPage.Children.Insert(1,ConfigTab);
但这导致应用程序崩溃,并显示以下消息:
未处理的异常:Java.Lang.IndexOutOfBoundsException:无效
索引2,大小为2
如果我在那一点检查孩子们,它已经在正确的索引处添加了页面
关于如何将新页面动态插入选项卡页面,有什么建议吗?并保留导航
更新:
现在,我已通过执行以下操作使其正常工作:
var paymentPage = tabPage.Children.FirstOrDefault(p=> p.ClassId == "PaymentNavPage");
var configPage = GetConfigPage();
var maintenancePage = tabPage.Children.FirstOrDefault(p => p.ClassId == "MaintaintNavPage");
// Clear old Tabgs
tabPage.Children.Clear();
// Put pages back
tabPage.Children.Add(paymentPage);
tabPage.Children.Add(configPage);
tabPage.Children.Add(maintenancePage);
我仍然对是否有更好的方法使用Insert方法,然后重置导航堆栈感兴趣。我对Insert给孩子们带来了同样的体验。您的解决方案似乎是隐藏和显示页面的唯一选项。我建议将页面分配给变量,这样您就不必在每次隐藏/显示ConfigPage时都遍历子对象。基于这些名称,我假设这些页面彼此不同 在类似页面的情况下,可以在DataTemplate的帮助下使用ItemsSource。将ItemsSource绑定到ObservableCollection时,隐藏和显示页面只需要修改该集合。有关这方面的更多信息,请访问:
我对孩子们的插入也有同样的感受。您的解决方案似乎是隐藏和显示页面的唯一选项。我建议将页面分配给变量,这样您就不必在每次隐藏/显示ConfigPage时都遍历子对象。基于这些名称,我假设这些页面彼此不同 在类似页面的情况下,可以在DataTemplate的帮助下使用ItemsSource。将ItemsSource绑定到ObservableCollection时,隐藏和显示页面只需要修改该集合。有关这方面的更多信息,请访问:
下一个代码对我有用:
tabPage.Children.Insert(1,ConfigTab);
下一个代码对我有用:
tabPage.Children.Insert(1,ConfigTab);
谢谢我猜之前Xamarin表单中有一个bug导致插入函数崩溃,但是已经修复了。谢谢。我猜Xamarin表单中以前有一个bug,导致插入函数崩溃,但已经修复。