如何重新加载/刷新已经显示过一次的片段?

How to reload / refresh fragment that has already been displayed once?

将您的 PagerAdapter class 导出为

public static class MyPagerAdapter extends FragmentStatePagerAdapter

而不是

public static class MyPagerAdapter extends FragmentPagerAdapter

基本上,FragmentPagerAdapter 将创建的 Fragment 保存在内存中,而 FragmentStatePagerAdapter 在它们移入和移出视图时销毁并重新创建它们。

进一步考虑:

1. 确保您 不是 在任何 Fragment 中呼叫 setRetainInstance(true),否则它们不会被刷新/更新。

2. 添加

viewPager.setOffscreenPageLimit(0);

到你的代码。这确保重新创建相邻的 Fragment

3. 而不是

Activity -> ViewPager -> Fragments

将结构创建为

Activity -> Fragment -> ViewPager -> Nested Fragments

这将确保每个 Fragment 在页面滑动时刷新。参见 this post 实现。

编辑:

正如下面评论中所讨论的,第 2 点是多余的。所以在这种情况下只有第 1 点和第 3 点实际上有用。

在您的第一个片段中添加以下内容:

@Override
public void setUserVisibleHint(boolean isVisibleToUser){
    super.setUserVisibleHint(isVisibleToUser);
    if (isVisibleToUser) {
        Log.e("Visible hint","in visibleHint ()");
        //add your method to set adapter to listview here by passing (getActivity().getApplicationContext()) parameter for context
    }
}

现在,当您想从其他片段转到第一个片段时,请使用:

((ActivityOfFragment) getActivity())./*viewPager if any.*/setCurrentItem(0/*fragment position*/, true);