在使用ViewPager+fragment框架時,fragment不執行onResume,onPause,解決辦法如下。
重載setUserVisibleHint方法
@OverridepublicvoidsetUserVisibleHint(booleanisVisibleToUser) {super.setUserVisibleHint(isVisibleToUser);if(isVisibleToUser) {//相當于Fragment的onResume}else{//相當于Fragment的onPause}? ? }
通過閱讀ViewPager和PageAdapter相關的代碼,切換Fragment實際上就是通過設置setUserVisibleHint和setMenuVisibility來實現的,調用這個方法時并不會釋放掉Fragment(即不會執行onDestoryView)。
使用fragmentManager操作fragment的show和hide
@OverridepublicvoidonHiddenChanged(booleanhidden) {super.onHiddenChanged(hidden);if(hidden){//pause}else{//resume}? ? }
需要注意的是第一次創建fragment不會執行此方法。