How to implement android Toolbar Back button

后端 未结 6 1017
野性不改
野性不改 2021-01-03 23:37

I am using a custom toolbar. I need to add back button to it. Now I am using this code to add the back button.

Toolbar toolbar = (Toolbar) getActivity().find         


        
6条回答
  •  臣服心动
    2021-01-04 00:19

    You can handle back icon very easily. If all of your fragment are in single Activity I really recommend to handle this with following way :

    first crate a abstract BaseFragment class which implement FragmentManager .OnBackStackChangedListener then put following method inside that :

      @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            mainActivity = (MainActivity) getActivity();
    
            getFragmentManager().addOnBackStackChangedListener(this);
    
            shouldDisplayHomeUp();
        }
    
        @Override
        public void onBackStackChanged() {
            shouldDisplayHomeUp();
        }
    
    
        public boolean shouldDisplayHomeUp() {
            //Enable Up button only  if there are entries in the back stack
            boolean canBack = false;
            try {
                canBack = getFragmentManager().getBackStackEntryCount() > 0;
            } catch (Exception ex) {
    //            Log.e(getClass().getCanonicalName(), ex.getMessage());getMessage
            }
    
            if (canBack) {
                mainActivity.drawerDisable();
            } else {
                mainActivity.drawerEnable();
            }
            return canBack;
        }
    

    By this way disableDrawer & enableDrawer function handle your Icon and OnBackPressed method handle your BackStack Now in your activity when you press back-icon display if needed. your onBackPressed should be something like this :

     int backStackCount = getSupportFragmentManager().getBackStackEntryCount();
    
                if (backStackCount == 0) {
                    //nothing exist in backStack OS handle it
                    super.onBackPressed();
                } else {
    
                    getSupportFragmentManager().popBackStack();
    }
    

    See full implementation here.

提交回复
热议问题