onResume()-用于在多个CHILD片段之间切换

时间:2018-09-02 05:58:05

标签: java android android-fragments

我遇到的基本问题是,我每次尝试返回特定片段时都试图执行刷新功能。

到目前为止,我一直在使用利用setUserVisibleHint()的变通方法,如下所示。

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if (isVisibleToUser) {
        refresh();
    }
}

但是,仅当在我的主要片段该片段之间切换时,此方法才有效。我想知道的是,当我从其他选项卡之一切换时如何执行此代码?

我们将不胜感激。

3 个答案:

答案 0 :(得分:1)

根本原因::这是Android中的一项名为offscreen page limit的功能,它将保留当前片段两侧的片段数量,默认值为1。 {1}}不足以刷新数据。

解决方案:

setUserVisibleHint

答案 1 :(得分:1)

即使用户对当前不可见,分页器中的

片段仍会显示为可见,受影响的分片因分页器offscreenPageLimit而异,因此请尝试刷新使用分页器时,setUserVisibleHintonResume中的片段无效。

尽管这是预期的行为,但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();
  .....
}