FragmentPagerAdapter - Comment gérer les Changements d'Orientation?

- Je utiliser un FragmentPagerAdapter contenant plusieurs Fragments qui ont besoin d'être informés à propos des changements à la database. Je le fais en une itération sur les fragments, qui implémentent une interface de rappel et d'appel à un refreshData() méthode.

Cela fonctionne bien jusqu'à ce que l'appareil change d'orientation. Après un changement d'orientation, le fragment de l'INTERFACE utilisateur n'a visiblement pas actualiser même si l'appel de la méthode semble fonctionner.

De ce que j'ai lu jusqu'à présent cela se produit parce que le FragmentPagerAdapter gère le fragment du cycle de vie et les fragments de recevoir le rappel ne sont pas celles qui sont affichées.

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

Je temporairement résolu ce problème à l'aide d'un récepteur de radiodiffusion à l'intérieur de chaque fragment, mais cette solution semble être inutile et peut créer des fuites de mémoire. Comment puis-je corriger cela? J'utilise une mise en page différente et la logique en mode paysage si je veux utiliser le nouvellement créé fragments après un changement d'orientation.

  • ajoutez à cela ur l'activité de la balise dans le Manifeste android:configChanges="orientation|screenSize|keyboardHidden" (Cible API 13+)
  • minSdkVersion est 7 donc cela ne marchera pas pour moi
InformationsquelleAutor Philipp E. | 2013-07-13