How to pop fragment off backstack

前端 未结 4 2158
半阙折子戏
半阙折子戏 2020-11-28 06:39

I have an activity A, which calls fragment Bf, which calls fragment Cf. I want Bf to be placed in the backstack when Cf is called so that users can navigate back to it. Ho

相关标签:
4条回答
  • 2020-11-28 07:16

    Three ways to pop Fragment off BackStack

    Simply add any of these lines:

    1)

    getActivity().getSupportFragmentManager().popBackStack();
    

    2)

    getActivity().getSupportFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
    

    3)

    getActivity().getSupportFragmentManager().popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
    

    They're all easy ways to pop fragment off Backstack

    0 讨论(0)
  • 2020-11-28 07:17

    Here's example to pop last fragment using BackStackEntry

    val manager = supportFragmentManager
    try {
        // get last entry (you can get another if needed)
        val entry = manager.getBackStackEntryAt(manager.backStackEntryCount - 1)
        // you can pop it by name
        manager.popBackStack(entry.name, FragmentManager.POP_BACK_STACK_INCLUSIVE)
        // or pop by id
        manager.popBackStack(entry.id, FragmentManager.POP_BACK_STACK_INCLUSIVE)
    } catch (ex: Exception) {
        ex.printStackTrace()
    }
    
    0 讨论(0)
  • 2020-11-28 07:26

    first replacing fragment container_view that time we add name as like "Later Transaction"

       getSupportFragmentManager().beginTransaction().replace(R.id.container_view, 
        profileFragment, "Profile").addToBackStack("Later Transaction").commit();
    

    then on back press button pop the back stack using the Later Transaction name

         int count = getSupportFragmentManager().getBackStackEntryCount();
        if(count > 1) {
         getSupportFragmentManager().popBackStack("Later Transaction", 
         FragmentManager.POP_BACK_STACK_INCLUSIVE);
        } else {
            DialogUtils.show(HomeActivity.this, 
            getString(R.string.exit_app_message), getString(R.string.alert), 
           "Yes","No", new DialogUtils.ActionListner() {
                @Override
                public void onPositiveAction() {
                    finish();
                }
                @Override
                public void onNegativeAction() {
                }
            });
        }
    
    0 讨论(0)
  • 2020-11-28 07:33

    You can pop the fragment by name. While adding fragments to the back stack, just give them a name.

    fragmentTransaction.addToBackStack("fragB");
    fragmentTransaction.addToBackStack("fragC");
    

    Then in Fragment_C, pop the back stack using the name ie.. fragB and include POP_BACK_STACK_INCLUSIVE

    someButtonInC.setOnClickListener(new View.OnClickListener() {
    
        @Override
        public void onClick(View v) {
    
            FragmentManager fm = getActivity()
                    .getSupportFragmentManager();
            fm.popBackStack ("fragB", FragmentManager.POP_BACK_STACK_INCLUSIVE);
        }
    });
    
    0 讨论(0)
提交回复
热议问题