Как перезагрузить все фрагменты одновременно - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть активность с 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 голосов
/ 19 декабря 2018

Сформируйте ViewModel с логическим полем MutableLiveData с именем say «refresh».Добавьте метод ViewModel с именем «toggleRefresh ()», который переворачивает состояние обновления.В каждом фрагменте в onAttatch наблюдайте поле обновления и выполняйте «перезагрузку там»?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...