Comment puis-je masquer la barre d'action d'un certain fragment? Puisque j'ai besoin de désactiver la barre d'action pour un fragment, ce n'est pas une option . Des idées? Merci.
EDIT: le niveau minimum de l’API est 7, sherlock n’est pas utilisé
Si vous utilisez AppCompatActivity (vous devriez), voici la solution qui a fonctionné pour moi:
((AppCompatActivity) getActivity()).getSupportActionBar().hide();
Vous pouvez ajouter ceci dans onCreate (). La méthode getActivity () du fragment de support renvoie FragmentActivity, qui ne contient pas la méthode getSupportActionBar (). En utilisant seulement getActionBar (), on obtient une exception null-pointer si vous avez AppCompatActivity.
getActionBar().hide()
ou getSupportActionBar().hide()
(si vous utilisez ActionBarCompat v7 lib) . Cordialement
Mettez getSupportActionBar().hide()
avant setContentView
dans l'activité qui contient les fragments.
Ajoutez également ceci: ((AppCompatActivity) getActivity()).getSupportActionBar().hide()
dans les fragments avant de gonfler la mise en page. Cela fonctionne si vous utilisez cette ActionBarActivity
.Il supprime également mon retard en masquant la barre d'action
Vous pouvez simplement le mettre dans votre méthode createView Fragment Class: -
View layout = inflater.inflate(R.layout.player_fragment, container, false);
((AppCompatActivity) getActivity()).getSupportActionBar().hide();
Masquer ActionBar en utilisant ceci dans le fragment requis.
getActivity().getSupportActionBar().hide();
Et affichez actionBar avec cela dans votre prochain fragment.
getActivity().getActionBar().show();
Avez-vous essayé getActivity().getSupportActionBar().hide()
dans la onCreate()
du fragment dans lequel vous souhaitez que la barre d’action soit masquée?
Je suppose que vous n'utilisez pas ActionBarSherlock
.
Cette solution est destinée aux applications complexes non-AppCompat qui utilisent natif ToolBar lors de l’exécution ultérieure de Lollipop et natif ActionBar sinon.
Cela suppose que vous souhaitiez masquer la barre d’action lorsque des fragments sont visibles.
Dans onCreate () dans chacune de vos activités:
getFragmentManager().addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener()
{
@Override
public void onBackStackChanged() {
U.ABkk(this, getFragmentManager().getBackStackEntryCount());
}
}
);
OU (bien mieux) dans une classe 'singleton' qui implémente Application.ActivityLifecycleCallbacks
@Override
public void onActivityCreated(final Activity A, Bundle savedInstanceState) {
A.getFragmentManager().addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() {
@Override
public void onBackStackChanged() {
U.ABkk(A, A.getFragmentManager().getBackStackEntryCount());
}
});
}
Dans la classe utilitaire:
/** Show/hide ActionBar for KitKat devices */
public static void ABkk(Activity A, int count) {
if (Lollipop()) return; // No problem when using Toolbar
ActionBar ab = A.getActionBar();
if (ab==null) return;
if (count==1) { ab.hide(); }
if (count==0) { ab.show(); }
}
/** Return true if API 21 or greater */
private static boolean Lollipop() {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop;
}
Utiliser onActivityCreated () est une solution qui nécessite aucun changement pour vos fragments ou vos activités!