【问题标题】:Refresh fragment in ViewPager在 ViewPager 中刷新片段
【发布时间】:2020-04-20 21:03:28
【问题描述】:

我的 ViewPager 有 3 个标签。 Tab(3),除了 stock 片段,还包括 2 个片段 (B) --> (C)。

Tab(1)
Tab(2)
Tab(3) --> (B) --> (C)

通过按下 (C) 中的按钮,我想刷新/重新创建 Tab(2)。 最好的方法是什么?谢谢你。

public class ViewPageAdapter extends FragmentStatePagerAdapter {

    private static int NUM_ITEMS = 3;
    private FragmentManager mFragmentManager;
    private Context mContext;

    public ViewPageAdapter(@NonNull FragmentManager fm, Context context) {
        super(fm,BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
        mFragmentManager = fm;
        mContext = context;
    }

    @NonNull
    @Override
    public Fragment getItem(int position) {

        switch (position){
            case 0: return new FragmentInsta();
            case 1: return new FragmentListUnlogged();
            case 2: return new FragmentHostUnlogged();
            default:
                return new FragmentListLogged();
        }
    }

    @Override
    public int getCount() {
        return NUM_ITEMS;
    }

    @Override
    public int getItemPosition(@NonNull Object object) {
        return POSITION_NONE;
    }
}

【问题讨论】:

  • 当您刷新标签 (2) 时,您希望对其进行哪些更改?它们是视觉变化还是什么?
  • 在 Tab(2) 片段的开头,如果用户登录,我会进行验证。如果是,则它将当前片段替换为 userIsLoggedFragment。所以我想刷新 Tab(2) 再次验证。
  • 所以它替换了 onCreateView 中的整个布局?
  • 是的,我有两个独立的全屏布局
  • 当您在要刷新的 Fragment 中使用 super(fm,BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT); 时,只需将要刷新的代码放在 onResume 方法中,这样当用户查看 Tab(2) 片段时,它将被刷新

标签: java android android-fragments android-viewpager


【解决方案1】:

感谢名为“Andrew”的用户,我找到了解决方案。 我用这种方式覆盖了onPause方法。

@Override
public void onResume() {
    if(preferenceUtils.getBoolean("isLogged")){
        FragmentTransaction trans = getChildFragmentManager().beginTransaction();
        trans.replace(R.id.listUnlogged_container, new FragmentListLogged(), "ListUnlogged-ListLogged");
        trans.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
        trans.addToBackStack(FRAGMENT_TAG);
        trans.commit();
    }
    super.onResume();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多