FragmentPagerAdapter - Jak obsługiwać zmiany orientacji?

Używam aFragmentPagerAdapter zawierające kilka fragmentów, które muszą zostać powiadomione o zmianach wdatabase. Robię to, iterując fragmenty implementujące interfejs wywołania zwrotnego i wywołującrefreshData() metoda.

Działa to dobrze, dopóki urządzenie nie zmieni orientacji. Po zmianie orientacji interfejs użytkownika fragmentu nie jest widocznie odświeżany, mimo że wywołanie metody wydaje się działać.

Z tego, co przeczytałem do tej pory, dzieje się, ponieważFragmentPagerAdapter obsługuje cykl życia fragmentów, a fragmenty, które otrzymują wywołanie zwrotne, nie są rzeczywiście wyświetlane.

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();
}

Tymczasowo rozwiązałem ten problem za pomocą odbiornika rozgłoszeniowego wewnątrz każdego fragmentu, ale to rozwiązanie wydaje się być marnotrawstwem i może powodować wycieki pamięci. Jak to naprawić prawidłowo? Używam innego układu i logiki w trybie poziomym, więc chcę użyć nowo utworzonych fragmentów po zmianie orientacji.

questionAnswers(3)

yourAnswerToTheQuestion