In Fragment on back button pressed Activity is blank

前端 未结 11 1708
囚心锁ツ
囚心锁ツ 2020-11-29 20:04

I have an Activity and many fragments inflated in same FrameLayout



        
11条回答
  •  迷失自我
    2020-11-29 20:21

    Almost same as Goodlife's answer, but in Xamarin.Android way:

    Load fragment (I wrote helper method for that, but it's not necessary):

    public void LoadFragment(Activity activity, Fragment fragment, string fragmentTitle = "")
    {
        var fragmentManager = activity.FragmentManager;
        var fragmentTransaction = fragmentManager.BeginTransaction();
    
        fragmentTransaction.Replace(Resource.Id.mainContainer, fragment);
        fragmentTransaction.AddToBackStack(fragmentTitle);
    
        fragmentTransaction.Commit();
    }
    

    Back button (in MainActivity):

    public override void OnBackPressed()
    {
        if (isNavDrawerOpen()) drawerLayout.CloseDrawers();
        else
        {
            var backStackEntryCount = FragmentManager.BackStackEntryCount;
    
            if (backStackEntryCount == 1) Finish();
            else if (backStackEntryCount > 1) FragmentManager.PopBackStack();
            else base.OnBackPressed();
        }
    }
    

    And isNavDrawerOpen method:

    bool isNavDrawerOpen()
    {
        return drawerLayout != null && drawerLayout.IsDrawerOpen(Android.Support.V4.View.GravityCompat.Start);
    }
    

提交回复
热议问题