FragmentPagerAdapter - Как обрабатывать изменения ориентации?

Я используюFragmentPagerAdapter содержащий несколько фрагментов, которые необходимо уведомить об изменениях вdatabase, Я делаю это путем перебора фрагментов, которые реализуют интерфейс обратного вызова, и вызоваrefreshData() метод.

Это работает просто отлично, пока устройство не изменит ориентацию. После изменения ориентации пользовательский интерфейс фрагмента не обновляется, хотя вызов метода, похоже, работает.

Из того, что я прочитал до сих пор, это происходит потому, чтоFragmentPagerAdapter обрабатывает жизненный цикл фрагмента, и фрагменты, которые получают обратный вызов, не являются теми, которые фактически отображаются.

private class DataPagerAdapter extends FragmentPagerAdapter {

    private DataFragment[] fragments = new DataFragment[] {
                                     new FooDataFragment(), BarDataFragment()};

    public DataPagerAdapter(android.support.v4.app.FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        return fragments[position];
    }

    @Override
    public int getCount() {
        return fragments.length;
    }

    public DataFragment[] getFragments() {
        return fragments;
    }
}

protected void refreshData() {
    for (DataFragment dataFragment : mPagerAdapter.getFragments()) {
     dataFragment.refreshData();
}

Я временно исправил эту проблему, используя приемник вещания внутри каждого фрагмента, но это решение кажется расточительным и может привести к утечкам памяти. Как исправить это правильно? Я использую другой макет и логику в ландшафтном режиме, поэтому я хочу использовать вновь созданные фрагменты после изменения ориентации.

Ответы на вопрос(3)

Ваш ответ на вопрос