Fragments: supprime tous les fragments d'une vue

Le scénario, je suis confronté à, est dans mon application j'ai un seul volet et double volet style de mise en page. Plutôt que de gérer individuellement chaque navigation entre les écrans, pour chaque style de mise en page, je suis en utilisant une fonction qui définit la mise en page correctement face à l'écran souhaité.

Il est fondamentalement un switch déclaration pour chaque écran dans l'application, avec un imbriquée switch instruction dans chaque écran pour chaque style de mise en page. C'est ce que je parle dans le code:

protected void setupScreen() {
    switch(currentScreen) {
    case SCREEN_ONE:
        switch(currentLayout) {
        case SINGLE_PANE:
            //Perform actions to setup the screen
            break;
        case DUAL_PANE:
            //Perform actions to setup the screen
            break;
        }
        break;
    case SCREEN_TWO:
        switch(currentLayout) {
        case SINGLE_PANE:
            //Perform actions to setup the screen
            break;
        case DUAL_PANE:
            //Perform actions to setup the screen
            break;
        }
        break
    //... etc ....
    }
}

Dans la section où je veux effectuer les actions pour l'installation de l'écranelle comprend les éléments suivants de base de trois opérations:

//Create the fragments if necessary
if (screenFragment == null) {
    screenFragment = new myFragment();
}

//Remove the existing fragments from the layout views
//HOW???

//Add the fragments for this screen to the view
getSupportFragmentManager().beginTransaction().add(pane1.getId(), myFragment, "myFragment").commit();

Comme vous pouvez le voir, ce que je suis aux prises avec le comment pour la deuxième étape. Comment ne vous supprimez tous les Fragments à partir d'un donné View sans savoir exactement quels sont ceux que vous êtes désireux de le supprimer? Le plus proche que j'ai trouvé est FragmentTransaction.replace() qui n'a réussi à le faire pour chaque cas mais quand il s'avère que vous remplacez un Fragment avec le même fragment. Dans ce cas, il ne permet pas de supprimer tout, puis ajouter (comme le suggère la documentation), il me semble que pour le retirer. Est-ce un problème avec l'aide de la compatibilité des bibliothèques ou n'est-il pas le chemin FragmentTransaction.replace() doit être utilisé?

En tout cas, comment dois-je faire? Dois-je code un removeAllFragments() fonction de parcourir chaque fragment et de la détacher ou est-il un moyen de faire de la première moitié de ce que le "deux en un" FragmentTransaction.replace() fonction prétend faire?

source d'informationauteur B T | 2013-02-08