144 votes

requestFeature() doit être appelée avant l’ajout de contenu

Je suis en train de mettre en œuvre une barre de titre personnalisé :

Voici ma classe d’assistance :

Voici où je l’appelle dans onCreate() :

Mais j’obtiens l’erreur :

351voto

Octavian Damiean Points 20620

Eh bien, juste faire ce que vous dit le message d’erreur.

N’appelez pas avant .

23voto

Cookster Points 611

Je sais que c'est plus d'un an, mais en l'appelant requestFeature() n'a jamais résolu mon problème. En fait, je n'appelle pas ça du tout.

C'était un problème de gonflage du point de vue, je suppose. Malgré toutes mes recherches, je n'ai jamais trouvé une solution convenable jusqu'à ce que j'ai joué un peu avec les différentes méthodes de gonflage d'un point de vue.

AlertDialog.Builder est une solution facile, mais nécessite beaucoup de travail si vous utilisez le onPrepareDialog() pour mettre à jour cet affichage.

Une autre alternative est de tirer parti des AsyncTask pour les dialogues.

Une dernière solution que j'ai utilisé est ci-dessous:

public class CustomDialog extends AlertDialog {

   private View content;

   public CustomDialog(Context context) {
       super(context);

       LayoutInflater li = LayoutInflater.from(context);
       content = li.inflate(R.layout.custom_view, null);

       setUpAdditionalStuff(); // do more view cleanup
       setView(content);           
   }

   private void setUpAdditionalStuff();
       // ...
   }

   // Call ((CustomDialog) dialog).prepare() in the onPrepareDialog() method  
   public void prepare() {
       setTitle(R.string.custom_title);
       setIcon( getIcon() );
       // ...
   }
}

* Quelques notes Supplémentaires:

  1. Ne vous fiez pas cacher le titre. Il y a souvent un espace vide malgré le titre n'étant pas défini.
  2. N'essayez pas de construire votre propre point de Vue avec en-tête pied de page et du moyen une vue. L'en-tête, comme indiqué ci-dessus, ne peuvent pas être entièrement caché malgré demandant FEATURE_NO_TITLE.
  3. Ne pas fortement le style de votre contenu de l'affichage avec des attributs de couleur ou la taille du texte. Laissez la boîte de dialogue gérer qui, autrement, vous risquez de mettre le texte en noir sur un bleu foncé boîte de dialogue car le vendeur inversé les couleurs.

14voto

Illegal Argument Points 4244

Je m’étendre un DialogFragment et la réponse ci-dessus ne fonctionne pas. J’ai dû utiliser getDialog() pour parvenir à supprimer le titre :

1voto

EboMike Points 39257

Ne l’erreur exactement vous dire quel est le problème ? Vous appelez et après que vous effectuez un appel `` .

Par ailleurs, pourquoi vous appelez `` deux fois ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X