0

J'ai BaseFragment que tous les autres fragments étendent. Et le fragment de base OnCreate() ajoute une barre d'action personnalisée à l'application. Tous les fragments enfants mettent à jour les boutons de la barre d'action et le titre. Sur le dos, appuyez sur la barre d'action ne sera pas mis à jour.La barre d'action n'est pas mise à jour à l'arrière dans BackStack of Nested Fragments?

abstrait BaseFragment public class {Fragment

 public TextView actionbarTextView; 
    public Button actionbarSettings; 

    public void updateActionbar(String title, boolean showSettings){ 
      actionbarTextView.setText(title); 
      actionbarSettings.setvisibility(showSettings ? View.VISIBLE :View.GONE); 
    } 
} 

public class ChildFragment1 extends BaseFragment{ 

     @override 
     onResume(){ 
      updateActionbar("ChildFragment1",false); 
     } 
} 
public class ChildFragment2 extends BaseFragment{ 

     @override 
     onResume(){ 
      updateActionbar("ChildFragment2",true); 
     } 
} 

ici quand je suis arrivé de childFragment1 -> childFragment2. À l'arrière, appuyer sur les boutons Titre et Action ne sont pas mis à jour.

Comment puis-je l'implémenter pour que ça fonctionne toujours? Je remplaçais fragment comme ci-dessous ..

 Fragment newFragment = new ExampleFragment(); 
     FragmentTransaction transaction = getFragmentManager().beginTransaction(); 

     // Replace whatever is in the fragment_container view with this fragment, 
     // and add the transaction to the back stack 
     transaction.replace(R.id.fragment_container, newFragment); 
     transaction.addToBackStack(true); 

     // Commit the transaction 
     transaction.commit(); 
+0

transaction.addToBackStack (null); –

+0

Utilisez onREsume dans Mainactivity à la place de basefreagment pour mettre à jour le fragment – raj

Répondre

0

Vous devez appeler getActivity().invalidateOptionsMenu(); pour mettre à jour votre Optionmenu.

documents dit: Declare that the options menu has changed, so should be recreated. The onCreateOptionsMenu(Menu) method will be called the next time it needs to be displayed

+0

Merci pour votre aide. Je mettais en application la barre d'action mal. cela a résolu mon problème. encore une fois –

Questions connexes