3 回答
TA贡献1891条经验 获得超3个赞
寻呼机的行为里面片段作为可见即使没有当前用户可见,受影响的片段有所不同基于寻呼机offscreenPageLimit所以尝试刷新片段内setUserVisibleHint或onResume使用寻呼机时,没有任何效果。
但是这是没有问题,因为它是预期的行为,寻呼机的目的是为了让页面间切换的用户,你在浏览器中切换标签..如果你还是坚持刷新页面,你可以做到这一点的寻呼机里面addOnPageChangeListener是这样的:
viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener(){
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
Fragment fragment = getSupportFragmentManager().findFragmentByTag("android:switcher:" + R.id.pager + ":" + position);
if(fragment != null && fragment instanceof RefreshableFragment)
((RefreshableFragment) fragment).refresh();
}
});
TA贡献1786条经验 获得超13个赞
根本原因:这是 Android 的一项功能,称为offscreen page limit,它将保留当前片段两侧的片段数,默认值为 1。在您的情况下,使用setUserVisibleHint不足以刷新数据。
解决方案:
public class YourFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,Bundle savedInstanceState) {
if (getUserVisibleHint()) { // fragment is visible to users.
refresh();
}
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser && isResumed()) { // fragment is visible to users
refresh();
}
}
public void refresh(){
}
}
TA贡献1752条经验 获得超4个赞
在片段下,您应该在片段的onResume()回调下调用您的方法。
public void onResume(){
super.onResume();
.....
}
添加回答
举报