8

J'ai un fragment de dialogue. J'ai l'intention d'utiliser ce fragment dans l'activité et le dialogue. Et je remplace les méthodes onCreateDialog et onCreateView. voici le codage. J'utilise ce fragment dans la classe d'activité comme cela.AndroidRuntimeException: requestFeature() doit être appelé avant d'ajouter du contenu

  SelectTimeIntervalDialogFragment fragment = new SelectTimeIntervalDialogFragment(); 
      fragment.setHrMin(hr, min); 
      Bundle args = new Bundle(); 

      FragmentTransaction t = getSupportFragmentManager().beginTransaction(); 
      t.replace(R.id.shift_period_interval_layout, fragment); 
      t.commit(); 

Je l'appelle d'une autre activité comme ça.

  if((getResources().getConfiguration().screenLayout & 
          Configuration.SCREENLAYOUT_SIZE_NORMAL) == 
          Configuration.SCREENLAYOUT_SIZE_NORMAL){ 
         Intent intent = new Intent(ShiftPeriodActivity.this, SelectIntervalActivity.class); 
         intent.putExtra("intervalHr", speriod.intervalHr); 
         intent.putExtra("intervalMin", speriod.intervalMin); 
         startActivityForResult(intent, 1); 
        } else { 
         FragmentManager fm = getSupportFragmentManager(); 
         intervalDialog = new SelectTimeIntervalDialogFragment(); 
         intervalDialog.setHrMin(speriod.intervalHr, speriod.intervalMin); 
         intervalDialog.show(fm, "interval_fragment"); 
        } 

J'ai deux conditions. Lorsque la taille de l'écran est normale, elle appelle une activité qui inclut une boîte de dialogue de fragment. Sinon, il appelle la boîte de dialogue contextuelle. J'ai l'exception quand il appelle la boîte de dialogue contextuelle. Il a dit requestFeature() must be called before adding content. Puis-je utiliser comme ça? Je voudrais savoir comment surmonter cela.

Merci.

+0

vous devriez être appelé first requestFeature avant le setcontentView() –

+0

Si votre problème a été résolu ?? – Subburaj

+2

Probable 'setup()' appelle 'requestFeature()' - vous appelez 'setup()' dans 'onCreateView()' et 'onCreateDialog()'. (Je sais, vieille question, mais est venu dans les files d'attente d'examen.) – laalto

Répondre

-3

Je pense que vous utilisez requestWindowFeature(); at on create

utilisez-le avant setContentView (R.layout.activity);

+0

J'ai l'exception quand j'appelle la boîte de dialogue contextuelle. – user1156041

15

Il semble que votre problème soit exactement le même que le mien - un code similaire et la même exception levée.

La solution est de faire ce que @laalto a suggéré: utiliser soit onCreateView() ou onCreateDialog() mais pas les deux en même temps. Je sais que l'exception peut être causée par beaucoup de choses différentes, mais c'est ce qui m'a aidé dans mon cas; j'espère que cela va aider quelqu'un d'autre dans le futur :)

+0

Et si vous aviez besoin des deux méthodes? –

+0

Je ne suis pas sûr que ce soit la bonne chose à faire, d'après ceci: "Les implémentations doivent remplacer cette classe et implémenter onCreateView (LayoutInflater, ViewGroup, Bundle) pour fournir le contenu de la boîte de dialogue ou remplacer onCreateDialog (Bundle) pour créer une boîte de dialogue entièrement personnalisée, telle que AlertDialog, avec son propre contenu. " (De: http://developer.android.com/reference/android/app/DialogFragment.html). – JakeP

+1

Le même lien mentionne également: "Au lieu de (ou en plus) d'implémenter onCreateView (LayoutInflater, ViewGroup, Bundle) pour générer la hiérarchie de vue dans une boîte de dialogue, vous pouvez implémenter onCreateDialog (Bundle) pour créer votre propre objet Dialog personnalisé. " Mais cela provoque la redoutée "AndroidRuntimeException: requestFeature() doit être appelée avant d'ajouter du contenu" Donc, soit les docs ou l'API est défectueux ... –

Questions connexes