首页 > 解决方案 > 如何同时重新加载所有片段

问题描述

我有一个包含 2 个片段的活动。我们将活动称为“MainActivity”,第一个片段“FragmentA”和第二个片段“FragmentB”。当我在 FragmentA 中删除一个元素时,我在 FragmentA 中使用这个方法来重新分配它:

public void reload_fragment() {
    FragmentTransaction ft = getFragmentManager().beginTransaction();
    ft.detach(this).attach(this).commit();
}

但我还需要同时重新加载 FragmentB。我尝试在上述方法中添加:

public void reload_fragment() {
    FragmentTransaction ft = getFragmentManager().beginTransaction();
    ft.detach(this).attach(this).commit();
    MainActivity mainActivity = new MainActivity();
    mainActivity.reload_fragments();

然后,在我的 mainActivity 中,我有这个方法:

  public void reload_fragments(){
    viewPager = findViewById(R.id.Viewpager_ID);

    adapter = new SimpleFragmentPagerAdapter(getSupportFragmentManager());
    viewPager.setAdapter(adapter);
    TabLayout tabLayout = findViewById(R.id.tablayout);
    tabLayout.setupWithViewPager(viewPager);
}

但它不起作用。我尝试将 FragmentA 内部的相同方法添加到 FragmentB,然后由 FragmentA 调用它,但它再次显示“NullObjectReference 上的虚拟方法”。如何同时刷新所有片段?

标签: javaandroidandroid-fragments

解决方案


形成一个带有 MutableLiveData 布尔字段的 ViewModel,称为“刷新”。向 ViewModel 添加一个名为“toggleRefresh()”的方法,该方法会翻转刷新状态。在每个片段中,在 onAttatch 中,观察刷新字段并“在那里重新加载”?


推荐阅读