Restoring fragment state when changing fragments through bottom navigation bar

后端 未结 4 707
星月不相逢
星月不相逢 2020-12-24 09:22

I have bottom navigation bar on click of item in navigation bar i am replacing fragments. I have 3 fragments A,B,C so on click of b item B fragment is loaded and in B i am c

4条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-12-24 09:43

    I used bottom navigation bar and I did it by customizing viewpager and I disable the swipe navigation. Each time user clicks bottom item, set relevant fragment in viewpager. Viewpager control state of fragment, so no need control state.

    Custom ViewPager

    public class BottomNavigationViewPager extends ViewPager {
    
        private boolean enabled;
    
        public BottomNavigationViewPager(Context context, AttributeSet attrs) {
            super(context, attrs);
            this.enabled = false;
        }
    
        @Override
        public boolean onTouchEvent(MotionEvent event) {
            if (this.enabled) {
                return super.onTouchEvent(event);
            }
    
            return false;
        }
    
        @Override
        public boolean onInterceptTouchEvent(MotionEvent event) {
            if (this.enabled) {
                return super.onInterceptTouchEvent(event);
            }
    
            return false;
        }
    
        /**
         * Enable or disable the swipe navigation
         * @param enabled
         */
        public void setPagingEnabled(boolean enabled) {
            this.enabled = enabled;
        }
    }
    

    If you still want to control state of fragment, you can see my answer in this link How to save fragment state in android?

提交回复
热议问题