如何同时重新加载所有片段

时间:2018-12-18 21:26:04

标签: java android android-fragments

我有一个有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上的虚拟方法”。如何同时刷新所有片段?

1 个答案:

答案 0 :(得分:0)

使用名为MutableLiveData的布尔字段(称为“刷新”)形成ViewModel。 在ViewModel中添加一个名为“ toggleRefresh()”的方法,该方法可以翻转刷新状态。 在每个片段的onAttatch中,观察刷新字段并进行“重新加载”吗?