Сначала ваша ссылка мертва, а затем я думаю, что вам нужно понять задний стек фрагментов и показать скрытые возможности, чтобы реализовать это. 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();
и наконец вы можете попытаться инкапсулировать контроллер