getActionBar retourne null
Appel getActionBar
retourne null
. Cela a été fréquemment rapportés j'ai donc fait en sorte d'inclure les solutions d'autres ont utilisé: Mon minSdkVersion=11
, j'ai une barre de titre, et je suis d'appeler getActionBar
après setContentView
. Aussi, mon activité n'est pas un enfant de l'activité.
setContentView(R.layout.main);
//experiment with the ActionBar
ActionBar actionBar = getActionBar();
actionBar.hide();
Appareil est un Samsung Galaxy Tab 10.1 sous Android 3.2
Merci d'avance pour vos idées ou suggestions!
InformationsquelleAutor user316117 | 2012-04-05
Vous devez vous connecter pour publier un commentaire.
Il semble que vous devez demander à avoir une Actionbar (!= barre de titre), soit par l'intermédiaire d'un Thème ou via le code ci-dessous.
Code de [ici]
Il semble qu'il y a plusieurs conditions qui doivent être remplies pour que cela fonctionne. Celui qui perplexe moi un long moment-là était:
Assurez-vous que votre activité s'étend de l'Activité (PAS ActionBarActivity).
Assurez-vous que votre manifeste de l'application a quelque chose comme
et assurez-vous que votre activité de mise en page
Marque
Me semblait résoudre toutes mes erreurs de commutation getActionBar() avec getSupportActionBar().
J'avais essayé différents thèmes, en ajoutant getWindow().requestFeature(Fenêtre.FEATURE_ACTION_BAR);,
fait en sorte que le setContentView(vue) est la première et toutes les autres choses vu avant.
D'Action de la barre besoins thème ou d'une activité à titre d'application pour être là. Assurez-vous que vous n'avez pas de style de votre application ou de l'activité en tant que Thème.NOTITLE.
J'ai essayé d'obtenir l'ActionBar à partir de l'intérieur d'un fragment à l'intérieur d'un ActionBarActivity à l'aide de la bibliothèque de prise en charge. J'ai dû le faire:
Ma prochaine quête est de comprendre comment faire de ce générique. Par exemple, ce code se sent sale, car il nécessite de mon Fragment de connaître à la fois qu'il est utilisé par un ActionBarActivity et à l'aide de la bibliothèque de prise en charge. Je pense que cela devrait être une méthode qui vérifie
getActivity().getActionBar()
en premier, suivi par le code au-dessus de la capture de la ClassCastException si le parent Activité n'est pas une ActionBarActivity.Si vous créez un projet d'application pour API14 ou au-dessus, il y aura une des valeurs-14 dossier. Assurez-vous que le dossier existe et il a une styles.xml fichier:
J'ai eu cette erreur car j'ai créé un nouveau projet et je ne voulais pas de valeurs supplémentaires dossiers dans mon projet, j'ai juste gardé les valeurs de dossier et supprimé les valeurs-v11 et les valeurs-v14 dossiers. Mais apparemment, le thème par défaut pour API14 et ci-dessus nécessite une ActionBar dans sa balise XML parent si vous souhaitez utiliser l'ActionBar. Donc, je suppose que je pouvais faire mal! Espérons que cela aide quelqu'un. Votre plus apte à résoudre vos problèmes avec les réponses ci-dessus, si.
Cela a réglé mon problème:
La vraie réponse doit être une combinaison des deux @zapl et @Himanshu Virmani
Pour Android Manifeste:
De L'Activité:
Assurez-vous d'étendre ACTIONBARACTIVITY et pas d'ACTIVITÉ
Cela devrait résoudre votre problème
il suffit de changer deux chose
1) le fichier de manifeste modifier
android:thème="@android:style/Thème.Holo" >
2) Fragment d'ajout de fichiers
android:thème="@android:style/Thème.WithActionBar"
Modifier l'ordre de système demande:
Dans le cas où vous développez une application qui vise sdk>=14 , et vous étendez AppCompat pour le Matériel de soutien à thème dans les versions précédentes aussi . Lorsque vous souhaitez masquer les éléments à partir de votre barre d'action, comme le bouton de retour, vous devez faire ceci :
Dans votre activité (pas dans le fragment de la classe)
Si vous vous utilisez getActionBar (), elle renvoie null. comme dans Appsupport thème getSupportAcionBar() retourne la barre d'action.
Voici le lien si vous voulez suivre de DevByte
peut-être votre activité est à la base de NoActionBar