CodePudding user response:
Because fragments were destroyed after the new, not the originalCodePudding user response:
First set viewpager setOffscreenPageLimit to the total number of fragments, prevent fragments destroyed, secondly, switching fragments will call setUserVisibleHint method, rather than onHiddenChanged, specific see FragmentPagerAdapter the code, reference
Public abstract class FragmentPagerAdapter extends PagerAdapter {
.
Public Object instantiateItem (ViewGroup container, int position) {
If (this. MCurTransaction==null) {
Enclosing mCurTransaction=this. MFragmentManager. BeginTransaction ();
}
Long itemId=this. GetItemId (position);
String name=makeFragmentName (container. GetId (), itemId);
Fragments fragments=this. MFragmentManager. FindFragmentByTag (name);
If (fragments!=null) {
This. MCurTransaction. Attach (fragments);
} else {
Fragments=enclosing the getItem (position);
This. MCurTransaction. Add (container. GetId (), fragments, makeFragmentName (container. The getId (), itemId));
}
If (fragments!=this. MCurrentPrimaryItem) {
Fragments. SetMenuVisibility (false);
Fragments. SetUserVisibleHint (false);
}
Return fragments;
}
Public void destroyItem (ViewGroup container, int the position, the Object Object) {
If (this. MCurTransaction==null) {
Enclosing mCurTransaction=this. MFragmentManager. BeginTransaction ();
}
This. MCurTransaction. Detach ((fragments) object);
}
Public void setPrimaryItem (ViewGroup container, int the position, the Object Object) {
Fragments fragments=(fragments) object;
If (fragments!=this. MCurrentPrimaryItem) {
If (this. MCurrentPrimaryItem!=null) {
This. MCurrentPrimaryItem. SetMenuVisibility (false);
This. MCurrentPrimaryItem. SetUserVisibleHint (false);
}
If (fragments!=null) {
Fragments. SetMenuVisibility (true);
Fragments. SetUserVisibleHint (true);
}
Enclosing mCurrentPrimaryItem=fragments;
}
}
}
CodePudding user response:
Only FragmentTransaction show () and hide () method will invoke onHiddenChanged () methodCodePudding user response:
GetUserVisibleHint is currently visibleCodePudding user response:
Yes, but why, what circumstance onHidenchanged effective