Je dois utiliser une combinaison de barre d'action et de fragments dans l'une de mes applications Android qui cible également Gingerbread. J'ai donc utilisé la barre d'action de la bibliothèque de support v7 et des fragments de la bibliothèque de support v4 et étendre ma classe avec FragmentActivity.
Je reçois une erreur lorsque je tape la ligne
actionbar = getSupportActionBar();
L'erreur indique que getSupportActionBar () n'est pas défini pour le type myFragmentClass (mon nom de classe). Le code fonctionne parfaitement sans la bibliothèque de support. Existe-t-il une solution à mon problème?
Merci!
Vous devez étendre ActionBarActivity au lieu de FragmentActivity pour avoir Actionbar avec des fragments.
Si vous utilisez la bibliothèque v7 appcompat, votre activité devrait plutôt étendre ActionBarActivity, qui est une sous-classe de FragmentActivity (pour plus d'informations, lisez Ajout de la barre d'actions).
Vous pouvez trouver plus d'informations sur la page ci-dessous. La ligne ci-dessus est tirée de la page ci-dessous (Dernier paragraphe). http://developer.Android.com/training/basics/fragments/creating.html
Edit- Ce n'est pas un bug. C'est juste un manque de connaissances. Parfois, les notions de base ne sont pas claires. J'apprends actuellement cela aussi sur le site Android, et c'est comme ça que je dois vous donner la réponse.
écrire ce code dans la méthode OnAttach ():
actionBar = ((ActionBarActivity) getActivity()).getSupportActionBar();
ActionBarActivity est obsolète. Utilisation
actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
J'avais également essayé d'utiliser:
actionbar = getActivity().getSupportActionBar();
et cela n'a pas fonctionné jusqu'à ce que je fasse ceci:
ActionBar actionBar = ((ActionBarActivity)getActivity()).getSupportActionBar();
Cela a donc fonctionné lorsque j'ai lancé mon activité principale.
pour Android.support.v7
ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
//than next for example
actionBar.setDisplayHomeAsUpEnabled(true);
Pour appeler l'ActionBar à l'intérieur d'un fragment, utilisez ceci:
actionbar = getActivity().getSupportActionBar();
Un Fragment n'a pas d'ActionBar mais l'Activité. C'est pourquoi vous devez l'appeler de cette façon.
Je l'ai essayé en étendant ActionBarActivity et en apportant quelques modifications dans AndroidManifest.xml comme
<activity Android:name="yourActionbarActivity"
Android: theme = "@ style/Theme.AppCompat.Light">
et ça marche bien pour moi