gpt4 book ai didi

c# - fragment 内的 MVVMCross-Android 动态 fragment 并管理每个 fragment 的导航堆栈

转载 作者:太空宇宙 更新时间:2023-11-03 12:06:08 25 4
gpt4 key购买 nike

我目前正在从事 MVVMCross Xamarin Android 项目。至此我已经实现了正常导航和底栏导航。我想在每个底部栏选项卡内打开动态 fragment 。例如,我有底部栏菜单 Recent、Favorite 和 NearBy。单击每个选项卡,它会创建 fragment 。在每个 fragment 中,我想提供在点击时动态创建 fragment 的工具。

我想在这里实现的是,它应该明智地保持导航标签的堆栈。假设我分别为 Recent、Favorite 和 Nearby 创建了 5、3、4 个 fragment ,目前我在最喜欢的选项卡上,点击返回应该首先导航回所有 3 个选项卡。同样,它应该遵循其他选项卡的导航。

此 github 链接中提供了完全相同的特性和功能[ https://github.com/ncapdevi/FragNav][1] .这是一个适用于 Android 的,但我需要建议如何使用 Xamarin、MVVMCross 和 C# 实现相同的功能。

非常感谢任何帮助。

最佳答案

首先你的链接是死的,然后我认为你需要了解 fragment 的后台堆栈并显示隐藏的功能来实现它。 FragmentTransaction

一般的思路,你有RecentFragmentFavoriteFragmentNearByFragment 三个根 fragment ,当你点击相关标签时,你可以使用 fragment 的显示隐藏方法这个:

 FragmentTransaction fTransaction = FragmentManager.BeginTransaction();
hideAllFragment(fTransaction);
//judge which tab is clicked
switch (tab.Id)
{
case Recent:
if (recentFragment== null)
{
recentFragment= new RecentFragment ();
fTransaction.Add(Resource.Id.ly_content, recentFragment);
}
else{fTransaction.Show(recentFragment);}break;
case Favorite:
if (favoriteFragment== null)
{
favoriteFragment= new FavoriteFragment();
fTransaction.Add(Resource.Id.ly_content, favoriteFragment);
}
else{fTransaction.Show(favoriteFragment);}
break;
case NearBy:
if (nearByFragment== null)
{
nearByFragment= new NearByFragment();
fTransaction.Add(Resource.Id.ly_content, nearByFragment);
}else{fTransaction.Show(nearByFragment);}break;
}
fTransaction.Commit();

然后在每个根 fragment 中使用 addToBackStack 实现返回堆栈:

FragmentManager fragmentManager = FragmentManager;
FragmentTransaction fragmentTransaction = fragmentManager.BeginTransaction();
fragmentTransaction.Replace(containerViewId,fragment);
fragmentTransaction.AddToBackStack(null);
fragmentTransaction.Commit();

最后你可以尝试封装一个 Controller

关于c# - fragment 内的 MVVMCross-Android 动态 fragment 并管理每个 fragment 的导航堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54921723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com