我有一个有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上的虚拟方法”。如何同时刷新所有片段?
答案 0 :(得分:0)
使用名为MutableLiveData的布尔字段(称为“刷新”)形成ViewModel。 在ViewModel中添加一个名为“ toggleRefresh()”的方法,该方法可以翻转刷新状态。 在每个片段的onAttatch中,观察刷新字段并进行“重新加载”吗?