web-dev-qa-db-fra.com

Comment masquer la barre d'action pour fragment?

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é

29
user3178137

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. 

43
Gober

getActionBar().hide() ou getSupportActionBar().hide() (si vous utilisez ActionBarCompat v7 lib) . Cordialement

8
michal.luszczuk

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

6
Magus 14

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();
5
Arish Khan

Masquer ActionBar en utilisant ceci dans le fragment requis.

getActivity().getSupportActionBar().hide();

Et affichez actionBar avec cela dans votre prochain fragment.

getActivity().getActionBar().show();
5
engico

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.

1
Justin Muller

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!

0
Bad Loser