Я новичок в разработке мобильных приложений
В настоящее время я разрабатываю приложение Телефонный справочник из Xamarin Android, в этом приложении у меня есть 4 фрагмента (HomeFragment, AboutFragment, DirectoryFragment и SyncFragment).
HomeFragment - это первый фрагмент, который отображается из приложения. Когда я нажимаю элемент О на боковой панели, а затем нажимаю кнопку «Назад», это работает хорошо, потому что я использовал AddToBackStack(null)
до commit()
в основном деятельность.
Но проблема в том, скажем, я открываю приложение, тогда оно показывает по умолчанию кулак HomeFragment , когда я перехожу к AboutFragment , оно показывает AboutPage , затем, если я перейду к DirectoryFragment next и нажму кнопку "Назад", я продолжу возвращаться к AboutPage / AboutFragment , чего я и хочу достичь это то, что должно go вернуться к HomePage / HomeFragment
Короче говоря, то, чего я хочу достичь, похоже на поведение навигации приложения Gmail.
В любом случае это мой код в Основная активность
switch (e.MenuItem.ItemId)
{
case (Resource.Id.nav_home):
FragmentTransaction ft = FragmentManager.BeginTransaction();
HomeFragment home = new HomeFragment();
ft.Replace(Resource.Id.HomeFrameLayout, home);
HideSoftKeyboard();
mDrawerLayout.AddDrawerListener(mDrawerToggle);
ft.AddToBackStack(null);
ft.Commit();
break;
case (Resource.Id.nav_about):
FragmentTransaction ft1 = FragmentManager.BeginTransaction();
AboutFragment about = new AboutFragment();
ft1.Replace(Resource.Id.HomeFrameLayout, about);
HideSoftKeyboard();
ft1.AddToBackStack(null);
ft1.Commit();
break;
case (Resource.Id.nav_etel):
FragmentTransaction ft2 = FragmentManager.BeginTransaction();
GHQFragment ghq = new DirectoryFragment();
ft2.Replace(Resource.Id.HomeFrameLayout, ghq);
HideSoftKeyboard();
ft2.AddToBackStack(null);
ft2.Commit();
break;
case (Resource.Id.nav_refresh):
if (CrossConnectivity.Current.IsConnected)
{
FragmentTransaction ft3 = FragmentManager.BeginTransaction();
SyncFragment sync = new SyncFragment();
ft3.Replace(Resource.Id.HomeFrameLayout, sync);
HideSoftKeyboard();
ft3.AddToBackStack(null);
ft3.Commit();
}
else
{
Toast.MakeText(this, "Please connect to the internet to sync records.", ToastLength.Long).Show();
}
break;