MainActivity to fragment and back to MainActivity on pressing back button

前端 未结 4 1305
说谎
说谎 2020-12-20 00:26

I have a Mainactivity which contains a Layout which is parent of 4 sub layout. on clicking on sub layout i am going to a new fragment replacing main layout. But i cant go ba

4条回答
  •  遥遥无期
    2020-12-20 01:08

    Here is how it can be done in Xamarin:

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

    public void LoadFragment(Activity activity, Fragment fragment)
    {
        var backStateName = fragment.GetType().Name;
        var fm = activity.FragmentManager;
        var ft = fm.BeginTransaction();
    
        ft.Replace(Resource.Id.mainContainer, fragment);
        ft.AddToBackStack(backStateName);
    
        ft.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();
        }
    }
    

    isNavDrawerOpen method:

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

提交回复
热议问题