Fragment lifecycle - which method is called upon show / hide?

前端 未结 11 1035
伪装坚强ぢ
伪装坚强ぢ 2020-12-04 08:31

I am using the following method to switch between Fragments (in my NavigationDrawer) by showing / hiding them.

protected void showFragment(int container, Fra         


        
11条回答
  •  长情又很酷
    2020-12-04 09:08

    Fragment in view pager behaviour is different with regular fragment container.

    Try this code:

        boolean mIsVisibleToUser;
    
        /**
         * is visible to user
         */
        public void show() {
            //do when show
        }
    
        /**
         * is invisible to user
         */
        public void hide() {
            //do when gone
        }
    
        @Override
        public void onResume() {
            super.onResume();
            if (!mIsVisibleToUser && getUserVisibleHint()) {
                mIsVisibleToUser = true;
                show();
            }
        }
    
        @Override
        public void onPause() {
            super.onPause();
            if (mIsVisibleToUser && getUserVisibleHint()) {
                mIsVisibleToUser = false;
                hide();
            }
        }
    
        @Override
        public void setUserVisibleHint(boolean isVisibleToUser) {
            super.setUserVisibleHint(isVisibleToUser);
            if (isResumed()) {
                if (mIsVisibleToUser != isVisibleToUser) {
                    mIsVisibleToUser = isVisibleToUser;
                    if (isVisibleToUser) show();
                    else hide();
                }
            }
        }
    
        public boolean isVisibleToUser() {
            return mIsVisibleToUser;
        }
    

提交回复
热议问题