我遇到的基本问题是,我每次尝试返回特定片段时都试图执行刷新功能。
到目前为止,我一直在使用利用setUserVisibleHint()的变通方法,如下所示。
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
refresh();
}
}
但是,仅当在我的主要片段和该片段之间切换时,此方法才有效。我想知道的是,当我从其他选项卡之一切换时如何执行此代码?
我们将不胜感激。
答案 0 :(得分:1)
根本原因::这是Android中的一项名为offscreen page limit
的功能,它将保留当前片段两侧的片段数量,默认值为1。 {1}}不足以刷新数据。
解决方案:
setUserVisibleHint
答案 1 :(得分:1)
片段仍会显示为可见,受影响的分片因分页器offscreenPageLimit
而异,因此请尝试刷新使用分页器时,setUserVisibleHint
或onResume
中的片段无效。
尽管这是预期的行为,但Pager的目的是让用户在浏览器中切换选项卡时在页面之间切换。
如果您仍然坚持刷新页面,则可以在分页器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();
}
});
答案 2 :(得分:0)
在该片段下,您应该在片段的onResume()
回调下调用您的方法。
public void onResume(){
super.onResume();
.....
}