我目前正在研究MVVMCross Xamarin Android项目。到目前为止,我已经实现了普通导航和底部栏导航。我想在每个底部栏标签中打开动态片段。例如,我有底部的菜单栏,最近,收藏和近距离。单击每个选项卡,它会创建片段。在每个片段内,我想提供单击时动态创建片段的功能。
我想在这里实现的是,它应该保持导航选项卡明智。假设我分别为“最近”,“收藏夹”和“附近”创建了5、3、4个片段,当前我位于“收藏夹”选项卡上,然后单击“上一步”应首先导航回所有3个选项卡。同样,它应该遵循其他选项卡的导航。
此github链接中的可用功能完全相同 [https://github.com/ncapdevi/FragNav][1]。这是一个适用于Android的应用程序,但我需要建议如何使用Xamarin,MVVMCross和C#实现相同的功能。
任何帮助,我们将不胜感激。
答案 0 :(得分:1)
首先,您的链接已失效,然后,我认为您需要了解片段的后叠并显示隐藏的功能以实现此目的。FragmentTransaction
一般思路,您有RecentFragment
,FavoriteFragment
和NearByFragment
三个根片段,
当您点击相对标签时,可以使用 show 和 hide 片段的方法
这个:
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();
,然后在每个根片段中使用 addToBackStack 来实现后向堆栈:
FragmentManager fragmentManager = FragmentManager;
FragmentTransaction fragmentTransaction = fragmentManager.BeginTransaction();
fragmentTransaction.Replace(containerViewId,fragment);
fragmentTransaction.AddToBackStack(null);
fragmentTransaction.Commit();
最后,您可以尝试封装控制器